【问题标题】:ValueError with Shapes using Bidirectional LSTM使用双向 LSTM 的形状的 ValueError
【发布时间】:2021-04-01 16:02:51
【问题描述】:

我正在尝试为序列到序列模型实现双向 LSTM。我已经对我的序列进行了一次热编码,共有 12 个特征。输入为 11 步,输出为 23 步。首先,我编写了这个 LSTM 实现,它使用第一个 LSTM 作为编码器,第二个作为解码器。

model = Sequential()
model.add(LSTM(75, input_shape=(11, 12)))
model.add(RepeatVector(23))
model.add(LSTM(50, return_sequences=True))
model.add(TimeDistributed(Dense(12, activation='softmax')))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
model.summary()
X, y = generate_data(1, taskset, trainset)
model.fit(X, y, epochs=1, batch_size=32, verbose=1)

然后我尝试将其转换为双向 LSTM,如下所示:

model = Sequential()
model.add(Bidirectional(LSTM(75, return_sequences=True), input_shape=(11,12), merge_mode='concat'))
model.add(Bidirectional(LSTM(50, return_sequences=True)))
model.add(TimeDistributed(Dense(12, activation='softmax')))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics= ['accuracy'])
model.summary()
X, y = generate_data(1, taskset, trainset)
model.fit(X, y, epochs=1, batch_size=32, verbose=1)

目标是使用第一个双向 LSTM 作为编码器,第二个双向 LSTM 作为解码器。我在双向实现中删除了RepeatVector,因为它给了我一个尺寸错误(需要dim=2,收到dim=3)。使用当前的双向 LSTM,我收到此错误:

ValueError: Shapes (None, 23, 12) and (None, 11, 12) are incompatible

任何有关修复双向 LSTM 实现的帮助将不胜感激!

【问题讨论】:

    标签: python tensorflow keras lstm bidirectional


    【解决方案1】:

    只需在您的第一个双向 LSTM 中设置 return_sequences=False 并像以前一样添加 RepeatVector(23) 就可以了

    n_sample = 10
    X = np.random.uniform(0,1, (n_sample, 11, 12))
    y = np.random.randint(0,2, (n_sample, 23, 12))
    
    model = Sequential()
    model.add(Bidirectional(LSTM(75), input_shape=(11,12), merge_mode='concat'))
    model.add(RepeatVector(23))
    model.add(Bidirectional(LSTM(50, return_sequences=True)))
    model.add(TimeDistributed(Dense(12, activation='softmax')))
    model.compile(loss='categorical_crossentropy', optimizer='adam', metrics= ['accuracy'])
    
    model.fit(X, y, epochs=3, batch_size=32, verbose=1)
    

    【讨论】:

      猜你喜欢
      • 2018-09-24
      • 1970-01-01
      • 2019-05-08
      • 1970-01-01
      • 2018-06-04
      • 2017-12-12
      • 1970-01-01
      • 2021-10-25
      • 1970-01-01
      相关资源
      最近更新 更多