【问题标题】:Keras fit method giving expected dense_1 to have 2 dimensions, but got array with shape (196, 353, 1)Keras 拟合方法使预期的 dense_1 具有 2 个维度,但得到了形状为 (196, 353, 1) 的数组
【发布时间】:2020-08-25 13:32:36
【问题描述】:

我正在使用以下 Keras 模型:

    # Create Model
    self.model = Sequential()
    self.model.add(LSTM(50, return_sequences=True, input_shape=(features_set.shape[1], features_set.shape[2])))
    self.model.add(Dropout(0.2))
    self.model.add(LSTM(50, return_sequences=True))
    self.model.add(Dropout(0.2))
    self.model.add(LSTM(50))
    self.model.add(Dropout(0.2))
    self.model.add(Dense(1))
    self.model.compile(optimizer = 'adam', loss = 'mean_squared_error')

features_set.shape196,353,4labels.shape196,353,1

但是当它在之后被调用时:

    self.model.fit(features_set, labels, epochs = 1, batch_size = 1)
    self.model.reset_states()

我得到错误:

预计 dense_1 有 2 个维度,但得到的数组形状为 (196, 353, 1)

最后一个 LSTM 没有返回序列,那么这里发生了什么?我看不出我做错了什么。

【问题讨论】:

    标签: python machine-learning keras lstm


    【解决方案1】:

    错误的模型构建,密集输出为 (196, 1),您正在拟合 label.shape (196,353,1)

    试试这个

    # Create Model
        self.model = Sequential()
        self.model.add(LSTM(50, return_sequences=True, input_shape=(features_set.shape[1], features_set.shape[2])))
        self.model.add(Dropout(0.2))
        self.model.add(LSTM(50, return_sequences=True))
        self.model.add(Dropout(0.2))
        self.model.add(LSTM(50, return_sequences=True))
        self.model.add(Dropout(0.2))
        self.model.add(Dense(1))
        self.model.compile(optimizer = 'adam', loss = 'mean_squared_error')
    

    【讨论】:

    • 谢谢,我觉得自己像个白痴。我很困惑,我认为 Dense 不应该得到序列,所以最后一个 LSTM 不应该返回它?
    猜你喜欢
    • 2017-09-28
    • 2019-05-09
    • 1970-01-01
    • 2019-01-16
    • 2018-02-06
    • 2020-06-18
    • 1970-01-01
    • 2018-09-16
    • 2018-12-08
    相关资源
    最近更新 更多