2016-05-26 107 views
2

我想將訓練有素的模型(代碼如下)轉換爲theano函數。但我收到以下錯誤:AttributeError: 'Dense' object has no attribute 'output'Keras模型到Theano函數

我的模型代碼:

model = Sequential() 

model.add(Convolution2D(32, 3, 3, border_mode='same', 
         input_shape=(img_channels, img_rows, img_cols))) 
model.add(Activation('relu')) 
model.add(Convolution2D(32, 3, 3)) 
model.add(Activation('relu')) 
model.add(MaxPooling2D(pool_size=(2, 2))) 
model.add(Dropout(0.25)) 

model.add(Convolution2D(64, 3, 3, border_mode='same')) 
model.add(Activation('relu')) 
model.add(Convolution2D(64, 3, 3)) 
model.add(Activation('relu')) 
model.add(MaxPooling2D(pool_size=(2, 2))) 
model.add(Dropout(0.25)) 

model.add(Flatten()) 
model.add(Dense(512)) 
model.add(Activation('relu')) 
model.add(Dropout(0.5)) 
model.add(Dense(nb_classes)) 
model.add(Activation('softmax')) 

# let's train the model using SGD + momentum (how original). 
sgd = SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True) 
model.compile(loss='categorical_crossentropy', 
       optimizer=sgd, 
       metrics=['accuracy']) 

我使用的Keras模型轉換爲theano函數的代碼通過以下this tutorial

from keras import backend as K 
    get_last_layer_output = K.function([model.layers[0].input], 
             [model.layers[-1].output]) 
    y=f(patches) 

誰能告訴我該怎麼做?

+0

嘿 - 請指定您使用的Keras版本。自1.0版以來,實施中發生了很多變化。 –

+0

我正在使用keras和Theano的最新版本 –

回答

1

嘗試model.layers[-1].get_output(train=False)original Keras tutorial可能已過時。

+0

現在又出現了另一個錯誤。在第二行i,e,y = f(補丁)中。錯誤說AssertionError:斷言{list,tuple}中的類型(輸入)。 –

+0

@AvijitDasgupta'y = f([patches])''怎麼樣? –

+0

是的!我已經將它改爲y = f([patches])。讓我試試,我會讓你知道:) –