2017-07-06 110 views
-2

你好,我是Keras的新人。我選擇keras執行本文:http://mmlab.ie.cuhk.edu.hk/projects/TCDCN.html。我只是將輸入大小更改爲48x48,然後輸出我只需要68個地標座標。這裏是我的網絡:使用Keras構建CNN模型

def mtfl40New(size): 
    model = Sequential() 
    model.add(Conv2D(16, (5, 5), padding='valid', input_shape=(3, size, size))) 
    model.add(Activation('tanh')) 
    model.add(MaxPooling2D(pool_size=(2, 2))) 

    model.add(Conv2D(48, (3, 3), padding='valid')) 
    model.add(Activation('tanh')) 
    model.add(MaxPooling2D(pool_size=(2, 2))) 

    model.add(Conv2D(64, (3, 3), padding='valid')) 
    model.add(Activation('tanh')) 
    model.add(MaxPooling2D(pool_size=(2, 2))) 

    model.add(Conv2D(64, (2, 2), padding='valid')) 
    model.add(Activation('tanh')) 

    model.add(Flatten()) 
    model.summary() 
    #model.count_params() 
    model.add(Dense(100, kernel_initializer="normal", input_shape=(576,))) 
    model.add(Activation('tanh')) 
    model.add(Dense(136, kernel_initializer="normal")) 
    model.add(Activation('tanh')) 

    model.compile(loss='mean_squared_error', optimizer='adam', metrics=['accuracy']) 
    return model 

但是我得到這個錯誤: enter image description here 任何人都可以幫助嗎? - 謝謝 -

回答

2

這又是您的輸入形狀和格式如何解釋之間的不兼容。您已經在Keras配置中將圖像排序設置爲通道,而輸入形狀的通道在最後。爲了解決這個問題只需更換這行:

model.add(Conv2D(16, (5, 5), padding='valid', input_shape=(3, size, size))) 

有了:

model.add(Conv2D(16, (5, 5), padding='valid', input_shape=(size, size, 3))) 
+0

你好,謝謝你的解決方案。但是,我仍然有這個問題。 「ValueError:檢查模型輸入時出錯:期望的conv2d_1_input具有形狀(無,48,48,3),但獲得具有形狀的數組(2912L,3L,48L,48L)」 我該如何解決? - 謝謝 - – herleeyandi

+0

@herleeyandi這是一個不同的問題,你應該問完全信息的另一個問題。 –