问题:我创建了编码器-解码器模型来预测时间序列。模型训练得很好,但我与推理模型中的错误作斗争,我不知道如何解决它:
警告:tensorflow:Keras 正在类似数组上进行训练/拟合/评估 数据。 Keras 可能未针对此格式进行优化,因此如果您的输入 TensorFlow I/O 支持的数据格式 (https://github.com/tensorflow/io)我们建议使用它来加载 相反,数据集。
TypeError: int() 参数必须是字符串、a 类似字节的对象或实数,而不是“NoneType”
Data:有 2 个输入:input1(编码器)- 多步单变量序列,input2(解码器)- 多步单变量序列。两个输入都用于训练,而仅输入 2 用于推理。我的输出是多步单变量序列。
型号:
N = 32
encoder_inputs = KL.Input(shape=(n_past, n_feat1))
encoder = KL.LSTM(N, return_state=True, return_sequences=False)
encoder_outputs, state_h, state_c = encoder(encoder_inputs)
enc_states = [state_h, state_c]
decoder_inputs = KL.Input(shape=(n_past, n_feat2))
decoder_lstm = KL.LSTM(N, return_sequences=True, return_state=False)
decoder_output = decoder_lstm(decoder_inputs, initial_state=enc_states)
dense1 = KL.TimeDistributed(KL.Dense(N, activation='relu'))
dense1_output = dense1(decoder_output)
dense2 = KL.TimeDistributed(KL.Dense(1))
out = dense2(dense1_output)
model = keras.models.Model([encoder_inputs, decoder_inputs], out)
decoder_state_input_h = KL.Input(shape=(N,))
decoder_state_input_c = KL.Input(shape=(N,))
decoder_states_inputs = [decoder_state_input_h, decoder_state_input_c]
decoder_outputs = decoder_lstm(decoder_inputs, initial_state=decoder_states_inputs)
out = dense1(decoder_outputs)
out = dense2(out)
inf_model = keras.models.Model([decoder_inputs]+decoder_states_inputs, out)
错误是由 :
创建的<compile and fit training model>
inf_model.predict([val_x[1]] + enc_states)
其中 val_x = [enc_input, dec_input]。 enc_states 是来自 Keras 的 2 个张量的列表(例如
错误原因:
我传递了
state_h
和 state_c
,它们是符号张量。我需要的是首先使用编码器模型计算它们。