繁体   English   中英

ValueError:检查目标时出错:预期 activation_9 具有形状 (74, 6) 但得到形状为 (75, 6) 的数组

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM