【问题标题】:How do i correctly shape my input data for a keras model?如何正确塑造 keras 模型的输入数据?
【发布时间】:2021-07-26 03:37:25
【问题描述】:

我目前正在研究一个 Keras 神经网络以获取乐趣。我只是在学习基础知识,但无法克服这个维度问题:

所以我的输入数据 (X) 应该是一个 12x6 矩阵,每个时间戳有 12 个时间戳和 6 个不同的数据值:

X = np.zeros([2867, 12, 6])
Y = np.zeros([2867, 3])

我的输出 (Y) 应该是 one-hot 编码的 3x1 向量。

现在我想通过以下 LSTM 模型提供这些数据。

model = Sequential()
model.add(LSTM(30, activation="softsign", return_sequences=True, input_shape=(12, 6)))
model.add(Dense(3))
model.summary()
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
model.fit(x=X, y=Y, batch_size=100, epochs=1000, verbose=2, validation_split=0.2)

摘要如下所示:

模型:“顺序”


Layer (type)                 Output Shape              Param #   
=================================================================
lstm (LSTM)                  (None, 12, 30)            4440      
_________________________________________________________________
dense (Dense)                (None, 12, 3)             93        
=================================================================
Total params: 4,533
Trainable params: 4,533
Non-trainable params: 0
_________________________________________________________________

当我运行这个程序时,我得到这个错误: ValueError:形状 (None, 3) 和 (None, 12, 3) 不兼容。

我已经尝试将我的数据重塑为 72x1 向量,但这也不起作用。

也许有人可以帮助我如何正确地塑造我的输入数据:)。

【问题讨论】:

    标签: python tensorflow keras neural-network dimensions


    【解决方案1】:

    在使用categorical_crossentropy 损失函数时,您可能需要如下定义模型。

    model.add(LSTM(30, activation="softsign", 
               return_sequences=False, input_shape=(12, 6)))
    model.add(Dense(3, activations='softmax'))
    

    【讨论】:

    • 如果有帮助请告诉我。
    • 不幸的是,这不起作用。错误保持不变。
    • 您可以在问题中显示model. summary() 吗?
    • 我明白了。事实上,你没有做我让你做的事。用上面的model.add替换你的model. add
    • 哦,是的,我忽略了“错误”,但现在它可以工作了!非常感谢:)
    猜你喜欢
    • 2020-04-11
    • 1970-01-01
    • 1970-01-01
    • 2018-12-10
    • 2019-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多