各位前輩好 目前剛學習keras有看過Keras Functional API for Deep Learning介紹 跑單一網路架構cnn是可以正常訓練的 但希望將CNN可以做成如圖所示
研究幾天後用了很多方法去讓2個輸入卷積後Flatten在做合併
但目前遇到問題無法解決
#前端資料夾抓取輸入影像
model1 = Sequential()
model1.add(Conv2D(96, (11, 11),strides=4, input_shape=input_shape)) #same
model1.add(Activation('relu'))
model1.add(MaxPooling2D(pool_size=(3, 3),strides=2))
model1.add(Conv2D(256, (3, 3),strides=1)) #strides=2 SAME
model1.add(Activation('relu'))
model1.add(MaxPooling2D(pool_size=(2, 2),strides=2))
model1.add(Conv2D(384, (5, 5),strides=1)) #SAME
model1.add(Activation('relu'))
#model1.add(MaxPooling2D(pool_size=(2, 2)))
model1.add(Flatten())
model2 = Sequential()
model2.add(Conv2D(96, (11, 11),strides=4, input_shape=input_shape)) #same
model2.add(Activation('relu'))
model2.add(MaxPooling2D(pool_size=(3, 3),strides=2))
model2.add(Conv2D(256, (3, 3),strides=1)) #strides=2 SAME
model2.add(Activation('relu'))
model2.add(MaxPooling2D(pool_size=(2, 2),strides=2))
model2.add(Conv2D(384, (5, 5),strides=1)) #SAME
model2.add(Activation('relu'))
model2.add(Flatten())
**merged = merge([model1, model2], mode='concat')**
final_model = Sequential()
final_model.add(merged)
#final_model.add(Dropout(0.25))
#final_model.add(Flatten())
final_model.add(Dense(1024,activation="relu")) #1024
final_model.add(Dropout(0.5))
#final_model.add(Dense(256,activation="relu"))
final_model.add(Dense(1))
final_model.add(Activation('sigmoid'))
final_model.compile(loss='binary_crossentropy',optimizer='rmsprop',metrics=['accuracy'])
執行後遇到
請教各位這是哪邊出了問題,還是不能這樣做使用有人可以給我解答嗎?
查過滿多資料與方法但得不到解答 再麻煩各位了 謝謝
你不是應該使用 Functional API,為什麼還使用 Sequential(),可參考:
https://keras.io/getting-started/functional-api-guide/