我有关于如何理解卷积层是如何添加的问题。我试图添加卷积层,但我得到了以下错误:
ValueError: GpuCorrMM shape inconsistency:
bottom shape: 128 32 30 30
weight shape: 3 32 3 3
top shape: 128 1 28 28 (expected 128 3 28 28)
Apply node that caused the error: GpuCorrMM_gradInputs{valid, (1, 1)}(GpuContiguous.0, GpuContiguous.0)
Inputs types: [CudaNdarrayType(float32, 4D), CudaNdarrayType(float32, 4D)]
Inputs shapes: [(3, 32, 3, 3), (128, 1, 28, 28)]
Inputs strides: [(288, 9, 3, 1), (784, 0, 28, 1)]
Inputs values: ['not shown', 'not shown']我试图理解什么是nb_filter,stack_size,nb_row,nb_col在一个卷积层上。
我的目标是复制VGG模型。
model = Sequential()
model.add(Convolution2D(32, 1, 3, 3, border_mode='full'))
model.add(Activation('relu'))
model.add(Convolution2D(32, 32, 3, 3))
model.add(Activation('relu'))
model.add(MaxPooling2D(poolsize=(2, 2)))
model.add(Dropout(0.25))
model.add(Convolution2D(64, 32, 3, 3, border_mode='full'))
model.add(Activation('relu'))
model.add(Convolution2D(64, 64, 3, 3))
model.add(Activation('relu'))
model.add(MaxPooling2D(poolsize=(2, 2)))
model.add(Dropout(0.25))
model.add(Flatten())
model.add(Dense(64*8*8, 512))
model.add(Activation('relu'))
model.add(Dropout(0.5))
model.add(Dense(512, nb_classes))
model.add(Activation('softmax'))
# let's train the model using SGD + momentum (how original).
sgd = SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True)
model.compile(loss='categorical_crossentropy', optimizer=sgd)-我现在用的是西亚诺和卡拉斯。
请给我任何小费。
发布于 2017-01-19 06:00:26
您需要校正卷积层的输出形状。CNN层的输出取决于许多因素,如输入大小、核数、步长和填充量。通常,对于大小为BxCxW1xH1的输入,输出将是BxFxW2xH2,其中B是批处理大小,C是输入通道,F是输出特性的数目,W1xH1是输入大小,您可以使用W1、H1、stride和填充来计算W2和H2的值。斯坦福大学的本教程很好地说明了这一点:http://cs231n.github.io/convolutional-networks/#comp。
希望能帮上忙!
https://stackoverflow.com/questions/31106263
复制相似问题