mat*_*ang 8 machine-learning neural-network conv-neural-network keras tensorflow
我正在尝试显示卷积神经网络每一层的输出。我使用的后端是 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])
Run Code Online (Sandbox Code Playgroud)
完整的错误是:
convout1_f = K.function([model.input(train=False)], convout1.get_output(train=False)) TypeError: 'Tensor' 对象不可调用
任何评论或建议都非常感谢。谢谢你。
get_output
和方法都 get_input
返回Theano
或TensorFlow
张量。由于该对象的性质,它不可调用。
为了编译一个函数,您应该只提供层张量和一个特殊的 Keras 张量,称为 learning_phase
which 设置应在哪个选项中调用您的模型。
按照这个答案,你的函数应该如下所示:
convout1_f = K.function([model.input, K.learning_phase()], convout1.get_output)
Run Code Online (Sandbox Code Playgroud)
请记住,在调用函数时需要传递 或True
,False
以便在学习或训练阶段模式下进行模型计算。
归档时间: |
|
查看次数: |
31400 次 |
最近记录: |