【发布时间】:2018-04-29 16:35:20
【问题描述】:
当我尝试定义我的模型时,我收到以下错误消息:ValueError: Negative dimension size caused by subtracting 5 from 1 for 'conv2d_19/convolution' (op: 'Conv2D') with input shapes: [?,1,1,32], [5,5,32,64].
这里是重现问题的代码 sn-p:
from keras.models import Sequential
from keras.layers import Dense, Dropout, Activation, Flatten
from keras.layers import Convolution2D, MaxPooling2D, AveragePooling2D
import numpy as np
nb_filters = 32
batch_size = 128
epochs = 5
nb_classes = 10
pool_size = (3, 3)
kernel_size = (5, 5)
img_rows = 32
img_cols = 32
input_shape = (img_rows, img_cols, 1)
model = Sequential()
model.add(Convolution2D(nb_filters, kernel_size,
input_shape=input_shape))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=pool_size))
model.add(Convolution2D(nb_filters, kernel_size))
model.add(Activation('relu'))
model.add(AveragePooling2D(pool_size=pool_size))
model.add(Convolution2D(nb_filters*2, kernel_size))
model.add(Activation('relu'))
model.add(AveragePooling2D(pool_size=pool_size))
model.add(Flatten())
model.add(Dense(nb_classes))
model.add(Activation('softmax'))
该问题已在 MacOS、Python 2.7.11 和 Keras 2.1.1 上观察到。
我构建模型的方式有什么问题吗?
这是我要构建的架构:
- 具有 32 个大小为 5 × 5 的滤波器、3 × 3 区域的最大池化和 ReLU 激活的卷积层
- 具有 32 个大小为 5 × 5 的滤波器、ReLU 激活和 3 × 3 区域的平均池化的卷积层
- 具有 64 个大小为 5 × 5 的滤波器、ReLU 激活和 3 × 3 区域的平均池化的卷积层
- 使用 softmax 的全连接层。
【问题讨论】:
-
请指定输入形状..
-
输入形状在代码 sn-p 中给出,为 (32, 32, 1)。你是说输入形状吗?
-
你在使用 tensorflow 后端吗?
-
是 tensorflow==1.4.0
-
你使用的是 RGB 图像,对吗?还是灰度。?