python - 模型错误 : Layer model_1 expects 1 input(s), 但它收到了 2 个输入张量

标签 python tensorflow keras deep-learning autoencoder

hist_model = Model.fit(x=train_average, y=train_zero,
                  epochs=5,
                  batch_size=256,
                  verbose = 2, 
                  validation_data=(train_average, validate))

我正在使用自动编码器模型进行推荐。当我运行上面的代码时,我在validation_data上收到以下错误。我正在使用 Google Colab。

 /usr/local/lib/python3.7/dist-packages/keras/engine/training.py:1298 test_function  *
        return step_function(self, iterator)
    /usr/local/lib/python3.7/dist-packages/keras/engine/training.py:1282 run_step  *
        outputs = model.test_step(data)
    /usr/local/lib/python3.7/dist-packages/keras/engine/training.py:1241 test_step  *
        y_pred = self(x, training=False)
    /usr/local/lib/python3.7/dist-packages/keras/engine/base_layer.py:989 __call__  *
        input_spec.assert_input_compatibility(self.input_spec, inputs, self.name)
    /usr/local/lib/python3.7/dist-packages/keras/engine/input_spec.py:197 assert_input_compatibility  *
        raise ValueError('Layer ' + layer_name + ' expects ' +

    ValueError: Layer model_1 expects 1 input(s), but it received 2 input tensors.

我需要帮助。

最佳答案

这是模型


# Convert data types from int64 to float32 to use as tensor inputs for Keras model
train_zero = tf.convert_to_tensor(train_zero, dtype=tf.float32)
train_one = tf.convert_to_tensor(train_one, dtype=tf.float32)
train_two = tf.convert_to_tensor(train_two, dtype=tf.float32)
#train_three = tf.convert_to_tensor(train_three, dtype=tf.float32)
#train_four = tf.convert_to_tensor(train_four, dtype=tf.float32)
#train_five = tf.convert_to_tensor(train_five, dtype=tf.float32)
train_average = tf.convert_to_tensor(train_average, dtype=tf.float32)
validate = tf.convert_to_tensor(validate, dtype=tf.float32)
test = tf.convert_to_tensor(test, dtype=tf.float32)



def AutoRec(X, reg, first_activation, last_activation):
  
    input_layer = x = Input(shape=(X.shape[1],), name='UserRating')
    x = Dense(500, activation=first_activation, name='LatentSpace', kernel_regularizer=regularizers.l2(reg))(x)
    output_layer = Dense(X.shape[1], activation=last_activation, name='UserScorePred', kernel_regularizer=regularizers.l2(reg))(x)
    model = Model(input_layer, output_layer)

    return model

AutoRec = AutoRec(train_zero, 0.0005, 'elu', 'elu')

AutoRec.compile(optimizer = Adam(lr=0.0001), loss=masked_mse, metrics=[masked_rmse_clip])
 
AutoRec.summary()


hist_model = AutoRec.fit(x=train_average, y=train_zero,
                  epochs=5,
                  batch_size=256,
                  verbose = 2, 
                  validation_data=(train_average, validate))

关于python - 模型错误 : Layer model_1 expects 1 input(s), 但它收到了 2 个输入张量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67999585/

相关文章:

Python Peewee MySQL 批量更新

tensorflow - 如何在 tensorflow playground 的第 4 个数据集上实现 0(训练和测试)损失?

python - Tensorflow 2 Keras 嵌套模型子类化 - 总参数为零

keras - 在卷积层后添加 Dense

python - 为什么 PyAutoGui LocateOnScreen() 只返回 None

python - "mapping"字典类错误

python - python中randint函数的意外结果

python-3.x - 用 CSV 格式的框存储 Tensorflow 对象检测 API 图像输出

machine-learning - tf.Session() 中的图参数有什么作用?

python - 在没有 Numpy 数组的情况下获取 ValueError