我正在尝试显示卷积神经网络每一层的输出。
我正在使用的后端是TensorFlow。
这是代码:

import ....
from keras import backend as K

model = Sequential()

model.add(Convolution2D(32, 3, 3, input_shape = (1,28,28)))
convout1 = Activation('relu')
model.add(convout1)

(X_train, y_train), (X_test, y_test) = mnist_dataset = mnist.load_data("mnist.pkl")
reshaped = X_train.reshape(X_train.shape[0], 1, X_train.shape[1], X_train.shape[2])


from random import randint
img_to_visualize = randint(0, len(X_train) - 1)


# Generate function to visualize first layer
# ERROR HERE
convout1_f = K.function([model.input(train=False)], convout1.get_output(train=False))   #ERROR HERE
convolutions = convout1_f(reshaped[img_to_visualize: img_to_visualize+1])


完整的错误是:


  convout1_f = K.function([model.input(train = False)],
  convout1.get_output(train = False))TypeError:'Tensor'对象不是
  可召回的


任何意见或建议均受到高度赞赏。谢谢。

最佳答案

get_outputget_input方法都返回TheanoTensorFlow张量。由于此对象的性质,它不可调用。

为了编译函数,您应该仅提供层张量和称为learning_phase的特殊Keras张量,该张量设置应在哪个选项中调用模型。

在此answer之后,您的函数应如下所示:

convout1_f = K.function([model.input, K.learning_phase()], convout1.get_output)


请记住,调用函数时需要传递TrueFalse以便在学习或训练阶段模式下进行模型计算。

关于machine-learning - TypeError:“张量”对象不可调用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41911883/

10-12 18:03
查看更多