2017-04-01 4 views
2

J'ai l'impression d'avoir des problèmes pour ajouter des couches dans keras.Ajout de calques avec des précédents dans keras? - L'objet Conv2D 'n'a pas d'attribut' is_placeholder '

Exemple:

import keras 
from keras.layers.merge import Concatenate 
from keras.models import Model 
from keras.layers import Input, Dense 
from keras.layers import Dropout 
from keras.layers.core import Dense, Activation, Lambda, Reshape,Flatten 
from keras.layers import Conv2D, MaxPooling2D, Reshape, ZeroPadding2D 

input_img = Input(shape=(3, 6, 3)) 

conv2d_1_1 = Conv2D(filters = 32, kernel_size = (3,3) , padding = "same" , activation = 'relu' , name = "conv2d_1_1")(input_img) 
conv2d_2_1 = Conv2D(filters = 64, kernel_size = (3,3) , padding = "same" , activation = 'relu')(conv2d_1_1) 
conv2d_3_1 = Conv2D(filters = 64, kernel_size = (3,3) , padding = "same" , activation = 'relu')(conv2d_2_1) 
conv2d_4_1 = Conv2D(filters = 32, kernel_size = (1,1) , padding = "same" , activation = 'relu')(conv2d_3_1) 
conv2d_4_1_flatten = Flatten()(conv2d_4_1) 

conv2d_1_2 = Conv2D(filters = 32, kernel_size = (3,3) , padding = "same" , activation = 'relu' , name = "conv2d_1_2")(input_img) 
conv2d_2_2 = Conv2D(filters = 64, kernel_size = (3,3) , padding = "same" , activation = 'relu')(conv2d_1_2) 
conv2d_3_2 = Conv2D(filters = 64, kernel_size = (3,3) , padding = "same" , activation = 'relu')(conv2d_2_2) 
conv2d_4_2 = Conv2D(filters = 32, kernel_size = (1,1) , padding = "same" , activation = 'relu')(conv2d_3_2) 
conv2d_4_2_flatten = Flatten()(conv2d_4_2) 


merge = keras.layers.concatenate([conv2d_4_1_flatten, conv2d_4_2_flatten]) 

dense1 = Dense(100, activation = 'relu')(merge) 
dense2 = Dense(50,activation = 'relu')(dense1) 
dense3 = Dense(1 ,activation = 'softmax')(dense2) 


model = Model(inputs = [conv2d_1_1 , conv2d_1_2] , outputs = dense3) 
model.compile(loss="crossentropy", optimizer="adam") 

print model.summary() 

Pourquoi suis-je pas en mesure de joindre mes couches comme ça? L'entrée est une image que j'ai manuellement séparé en en forme de (3,6,3) ..

Répondre

1

Votre entrée n'est pas correcte, vous le dites vous-même, l'entrée est votre image. Modifiez la façon dont vous créez le modèle:

model = Model(inputs = input_img , outputs = dense3) 

Cela devrait fonctionner.