2017-07-06 92 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这是一个不同的问题,你应该问完全信息的另一个问题。 –