2

我試圖顯示卷積神經網絡每層的輸出。 我使用的後端是TensorFlow。 下面是代碼:TypeError:'張量'對象不可調用

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' object is not callable

任何意見或建議是高度讚賞。謝謝。

+0

我的回答正確嗎?你試過了嗎? –

回答

0

get_outputget_input都返回TheanoTensorFlow張量。由於這些對象的性質,它不可調用。

爲了編譯一個函數,你應該只提供層張量和一個叫做learning_phase的特殊Keras張量,它設置了你的模型應該被調用的選項。

在此之後answer你的函數應該是這樣的:

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

記住,你需要通過其中True或調用您的功能,以使你的模型計算,在任何學習或訓練階段模式時False

相關問題