
[英]ValueError: Layer model_2 expects 2 inputs, but it received 1 input tensors
[英]ValueError: Layer model expects 1 input(s), but it received 3 input tensors. Inputs received: [<tf.Tensor
我正在尝试创建一个用于文本分析的 cnn 模型。 但是,当我定义模型时,出现以下错误
ValueError: Layer model expects 1 input(s), but it received 3 input tensors. Inputs received: [<tf.Tensor 'IteratorGetNext:0' shape=(None, 1112) dtype=int32>, <tf.Tensor 'IteratorGetNext:1' shape=(None, 1112) dtype=int32>, <tf.Tensor 'IteratorGetNext:2' shape=(None, 1112) dtype=int32>]
由于我的输入层是一个 numpy 数组,因此我尝试更改大小,但这也不起作用。
trainX = expand_dims(trainX, -2)
代码:
def cnn(maxlen, embed_size, recurrent_units, dropout_rate, dense_size, nb_classes):
input_layer = Input(shape=(maxlen, embed_size), )
x = Dropout(dropout_rate)(input_layer)
x = Conv1D(filters=recurrent_units, kernel_size=2, padding='same', activation='relu')(x)
x = MaxPooling1D(pool_size=2)(x)
x = Conv1D(filters=recurrent_units, kernel_size=2, padding='same', activation='relu')(x)
x = MaxPooling1D(pool_size=2)(x)
x = Conv1D(filters=recurrent_units, kernel_size=2, padding='same', activation='relu')(x)
x = MaxPooling1D(pool_size=2)(x)
x = GRU(recurrent_units)(x)
x = Dropout(dropout_rate)(x)
x = Dense(dense_size, activation="relu")(x)
x = Dense(nb_classes, activation="sigmoid")(x)
model = Model(inputs=input_layer, outputs=x)
model.summary()
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
return model
模型:
parameters_cnn = {
'embed_size': 300,
'epoch': 30,
'batch_size': 256,
'dropout_rate': 0.3,
'recurrent_dropout_rate': 0.3,
'recurrent_units': 64,
'dense_size': 32,
}
model = cnn(length, parameters_cnn['embed_size'],
parameters_cnn['recurrent_units'],
parameters_cnn['dropout_rate'],
parameters_cnn['dense_size'], 3)
拟合模型
model.fit([trainX, trainX, trainX], array(trainLabels), epochs=6, batch_size=16)
有没有人知道我可以尝试什么或知道我在哪里搞砸了?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.