我正在尝试一些技巧,并且正在尝试进行基本的时间序列预测。我的输入是一个介于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/

10-12 22:43
查看更多