代码之家  ›  专栏  ›  技术社区  ›  Supamee

如何在keras神经网络中实现简单的数据召回

  •  1
  • Supamee  · 技术社区  · 6 年前

    我在试着掌握keras的窍门,我在试着让基本的时间序列预测工作。我的输入是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,))
    

    加上 input_shape=input.shape[1:]

    这似乎是一件微不足道的事情,但我显然遗漏了一些东西。

    1 回复  |  直到 6 年前
        1
  •  1
  •   from keras import michael    6 年前

    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将推断下一层的数据形状,但第一层需要定义输入形状。