Keras-如何将LSTM代码转换为CNN

时间:2018-11-02 11:30:45

标签: python tensorflow keras lstm

我正在正或负进行二进制分类情感分析,我的lstm代码工作正常,但是我正在将我的lstm代码转换为cnn,具有“ input_length”的值错误为30,但是收到的输入具有形状(无,1)

我的输入形状为(30,1)我的批量大小为24 in lstm

model.add(Embedding(30,30,input_length=30))
model.add(Conv1D(padding='valid',activation='relu',strides=1))
model.add(Dropout(0.2))
model.add(Dense(30))
model.add(Dropout(0.2))
model.add(Activation('relu'))
model.add(Dense(1))
model.add(Activation('sigmoid'))
model.compile(loss='binary_crossentropy',optimizer='adam',metrics=['accuracy'])
model.fit(inputBatch, ponlabel,batch_size=24,epochs=20,validation_data=(inputBatch, ponlabel))

为了便于参考,我已经输入了LSTM代码。

model.add(LSTM(100, input_shape=(30, 1)))
model.add(Dense(30, activation="relu"))
model.add(Dense(1, activation="sigmoid"))
model.compile(loss='mean_absolute_error', optimizer='adam',metrics=["accuracy"])
model.fit(inputBatch, ponlabel,
          batch_size=24, epochs=20, verbose=1)

1 个答案:

答案 0 :(得分:0)

您正在使用Convolution2D,但按时间步长计算的数据是一维的。因此,您需要使用Convolutional1D对句子中的标记进行卷积。 Keras示例文件夹imdb_cnn.py中有一个CNN文本分类。