[英]ValueError: Error when checking target: expected dense_2 to have shape (2,) but got array with shape (75,)
[英]ValueError: Error when checking target: expected activation_9 to have shape (74, 6) but got array with shape (75, 6)
我从事命名实体识别(在火车中每个单词都有一个标签)标签的数量是 6 我运行模型
from keras.models import Sequential
from keras.layers import Dense, LSTM, InputLayer, Bidirectional, TimeDistributed, Embedding, Activation
from keras.optimizers import Adam
from keras import initializers
model = Sequential()
model.add(InputLayer(input_shape=(MAX_LENGTH, )))
model.add(Embedding(len(word2index), 128))
model.add(Conv1D(filters=32, kernel_size=2, activation='relu'))
model.add(Bidirectional(LSTM(256, return_sequences=True)))
# model.add(AttentionLayer(300,True,name='word_attention'))
model.add(TimeDistributed(Dense(len(tag2index))))
model.add(Activation('softmax'))
model.compile(loss='categorical_crossentropy',
optimizer=Adam(0.001),
metrics=['accuracy'])
model.summary()
模型如下。
def to_categorical(sequences, categories):
cat_sequences = []
for s in sequences:
cats = []
for item in s:
cats.append(np.zeros(categories))
cats[-1][item] = 1.0
cat_sequences.append(cats)
return np.array(cat_sequences)
cat_train_tags_y = to_categorical(train_tags_y, len(tag2index))
model.fit(train_sentences_X, cat_train_tags_y, batch_size=128, epochs=20, validation_split=0.2)
当我执行 fit 命令时,显示以下错误: ValueError: Error when checking target: expected activation_9 to have shape (74, 6) but got array with shape (75, 6)
checks ValueError: Error when checking target: expected activation_9 to have shape (74, 6) but got array with shape (75, 6)
卷积层减少了其输入的空间维度。
由于您使用的是kernel_size=2
,您将数据的长度缩短到original_length - 1
(从 75 到 74)。
解决方案是在你的卷积层中使用padding='same'
,这样系统会自动添加一个填充,所以最终长度与输入相同。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.