我正在尝试一些技巧,并且正在尝试进行基本的时间序列预测。我的输入是一个介于0到10之间的随机整数的列表,例如:[1,3,2,4,7,5,9,0]
,而我的标签与输入相同,但是被延迟了,例如:[X,X,1,3,2,4,7,5]
,我正在尝试让我的模型学习这种回忆过去的关系数据点。
我的代码是:
labels = keras.utils.to_categorical(output, num_keys)
model = keras.Sequential([
keras.layers.LSTM(10),
keras.layers.Dense(10, activation='relu'),
keras.layers.Dense(10, activation=tf.nn.softmax)
])
model.compile(optimizer=tf.train.AdamOptimizer(),
loss=tf.keras.losses.categorical_crossentropy,
metrics=['accuracy'])
model.fit(input, labels, epochs=30, verbose=2,shuffle=False)
我收到错误:
ValueError: Please provide as model inputs either a single array or a list of arrays. You passed: x=[7, 6,...
我尝试用以下方法重新输入:
input=numpy.array([[i,input[i]]for i in range(len(input))])
input=numpy.reshape(input,input.shape+(1,))
并在我的LSTM层中添加
input_shape=input.shape[1:]
并不会引发任何错误,但准确度并不能只是盲目猜测这似乎是一件微不足道的事情,但我显然遗漏了一些东西。
最佳答案
对于keras.layers.LSTM(10)
,您需要包括输入数据形状:keras.layers.LSTM(10, input_shape = (input.shape[1], input.shape[2]))
。
Keras期望输入数据的形状为[实例,时间,预测变量],并且由于您没有任何其他的预测变量,因此您可能需要将输入数据重塑为input.reshape(input.shape[0], input.shape[1], 1)
。
Keras将推断出下一层的数据形状,但是第一层需要定义输入形状。
关于python - 如何在Keras神经网络中进行简单的数据调用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51972364/