TypeError:“张量”对象不可调用Keras自动编码器

时间:2019-08-22 17:37:21

标签: python tensorflow keras

我在this tutorial之后在Keras中创建了一个自动编码器,但不断出现以下错误。

decoder = tf.keras.Model(encoded_input, decoded(input_img))
TypeError: 'Tensor' object is not callable

由于这种对象的性质,我认为这与不能以这种方式使用张量有关,但是我在理解为什么以及如何解决这个问题上有一些空白。

这是我的代码的一个最小工作示例:

# input_img input placeholder
input_img = tf.keras.layers.Input(shape=(16, 16, 1), name ="input")
encoded = tf.keras.layers.Dense(encoding_dim, activation='relu')(input_img)
decoded = tf.keras.layers.Dense(256, activation='sigmoid')(encoded)
autoencoder = tf.keras.Model(input_img, decoded)
encoder = tf.keras.Model(input_img, encoded)
encoded_input = tf.keras.layers.Input(shape=(encoding_dim,))
decoder = tf.keras.Model(input_img, decoded(encoded_input))

1 个答案:

答案 0 :(得分:1)

Keras Model期望输入和输出参数为 layers ,而不是张量。本教程是正确的-您似乎在decoder =之前错过了一行:-decoder_layer = autoencoder.layers[-1]

一起更改了decoder =

input_img = tf.keras.layers.Input(shape=(16, 16, 256), name ="input")
encoded   = tf.keras.layers.Dense(encoding_dim, activation='relu')(input_img)
decoded   = tf.keras.layers.Dense(256, activation='sigmoid')(encoded)

autoencoder = tf.keras.Model(input_img, decoded)
encoder     = tf.keras.Model(input_img, encoded)

encoded_input = tf.keras.layers.Input(shape=(encoding_dim,))
decoder_layer = autoencoder.layers[-1] # gets 'decoded' = last layer of 'autoencoder'

decoder = tf.keras.Model(encoded_input, decoder_layer(encoded_input))