我正在做一个机器学习项目,用卷积神经网络对狗进行分类。我正在Keras建立自己的神经网络,使用预先训练过的异常神经网络进行转移学习。在创建神经网络的过程中,我遇到了以下错误:
从1中减去2导致的尺寸为负
“Max_Pooling2d_2/MaxPool”(操作:“MaxPool”),输入形状:
[?1,1,40]。
这是我用来加载数据集和训练模型的代码。请注意:我不能访问异常神经网络,因此我不能简单地将模型的输出张量添加到我的模型中。
### TODO: Obtain bottleneck features from another pre-trained CNN.
bottleneck_features = np.load('/data/bottleneck_features/DogXceptionData.npz')
train_Xception = bottleneck_features['train']
valid_Xception = bottleneck_features['valid']
test_Xception = bottleneck_features['test']
### TODO: Define your architecture.
import keras
print(keras.__version__)
transfertrained_model = Sequential()
transfertrained_model.add(Conv2D(20,(2,2),input_shape=(train_Xception.shape[1],train_Xception.shape[2],3)))
transfertrained_model.add(Conv2D(40,(2,2)))
transfertrained_model.add(MaxPooling2D())
transfertrained_model.add(Conv2D(40,(2,2)))
transfertrained_model.add(MaxPooling2D())
transfertrained_model.add(Conv2D(80,(2,2)))
transfertrained_model.add(MaxPooling2D())
transfertrained_model.add(GlobalAveragePooling2D())
transfertrained_model.add(Dense(133))
transfertrained_model.add(Activation('sigmoid'))
transfertrained_model.summary()
设置:
Python 3
Keras 2.0.9
我已经读过的问题
Github上的帖子(
https://github.com/keras-team/keras/issues/7611
)建议我应该使用KERAS 2 API。既然我是,这个建议不适用于我。
另一个StackOverflow答案(
Negative dimension size caused by subtracting 3 from 1 for 'conv2d_2/convolution'
)建议我将数据格式设置为“频道优先”。我做到了,然后maxpooling2d层抱怨同样的错误。
请帮助!