简体   繁体   English

Tensorflow 卷积神经网络负维大小

[英]Tensorflow Convolution Neural Network Negative Dimension size

I am building this CNN model, '''我正在构建这个 CNN 模型,'''

x_test = np.array(x_test).reshape(-1,IMAGE_SIZE,IMAGE_SIZE,1)
x_train = np.array(x_train).reshape(-1,IMAGE_SIZE,IMAGE_SIZE,1)


model = tf.keras.Sequential()

model.add(Conv2D(16,(3,3),padding='same',input_shape=x_train.shape[1:]))  
model.add(Activation("relu"))
model.add(MaxPooling2D(pool_size=(2,2)))

model.add(Conv2D(32,(3,3),strides=(2,2),padding='valid'))
model.add(Activation("relu"))
model.add(MaxPooling2D(pool_size=(2,2)))

model.add(Conv2D(32,(2,2),padding='same')) 
model.add(Activation("relu"))
model.add(MaxPooling2D(pool_size=(2,2)))

model.add(Conv2D(64,(2,2),strides=(2,2),padding='valid'))
model.add(Activation("relu"))

model.add(GlobalAveragePooling2D())
model.add(Dense(64))
model.add(Activation("relu"))
model.add(Dense(10))
model.add(Activation("softmax"))

''' '''

But this is giving me an error:- InvalidArgumentError: Negative dimension size caused by subtracting 2 from 1 for '{{node conv2d_115/Conv2D}} = Conv2D[T=DT_FLOAT, data_format="NHWC", dilations=[1, 1, 1, 1], explicit_paddings=[], padding="VALID", strides=[1, 2, 2, 1], use_cudnn_on_gpu=true](Placeholder, conv2d_115/Conv2D/ReadVariableOp)' with input shapes: [?,1,1,32], [2,2,32,64].但这给了我一个错误:- InvalidArgumentError:负维度大小由 '{{node conv2d_115/Conv2D}} = Conv2D[T=DT_FLOAT, data_format="NHWC", dilations=[1, 1, 1, 1], explicit_paddings=[], padding="VALID", strides=[1, 2, 2, 1], use_cudnn_on_gpu=true](Placeholder, conv2d_115/Conv2D/ReadVariableOp)' 输入形状:[?,1] ,1,32], [2,2,32,64]。

During handling of the above exception, another exception occurred:在处理上述异常的过程中,又发生了一个异常:

ValueError: Negative dimension size caused by subtracting 2 from 1 for '{{node conv2d_115/Conv2D}} = Conv2D[T=DT_FLOAT, data_format="NHWC", dilations=[1, 1, 1, 1], explicit_paddings=[], padding="VALID", strides=[1, 2, 2, 1], use_cudnn_on_gpu=true](Placeholder, conv2d_115/Conv2D/ReadVariableOp)' with input shapes: [?,1,1,32], [2,2,32,64]. ValueError: 由 1 减去 2 引起的负维度大小为 '{{node conv2d_115/Conv2D}} = Conv2D[T=DT_FLOAT, data_format="NHWC", dilations=[1, 1, 1, 1],explicit_paddings=[] , padding="VALID", strides=[1, 2, 2, 1], use_cudnn_on_gpu=true](Placeholder, conv2d_115/Conv2D/ReadVariableOp)' 输入形状:[?,1,1,32], [2, 2,32,64]。

What does this error mean?这个错误是什么意思? What I am doing wrong?我做错了什么? Please help me in fixing this.请帮我解决这个问题。

这可能意味着,由于像 maxpooling 和 conv2d 这样的层具有“有效”填充值,某些层的输入变得非常小,以至于张量的形状为 [?,1,1,32],因此它不能执行大小为 2 的 2D maxpooling 或 2D 卷积。在这种情况下,您需要根据输入大小重新设计层(意味着更改层数,或输入大小、步幅、填充选项等) .

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM