Python - Keras:调用层"conv2d_19"时遇到异常(类型 Conv2D)



刚开始学习Python并尝试我得到的卷积神经网络代码。我犯了一个错误,我不知道如何解决这个问题。这里是错误和它的截图。谁知道如何解决这个问题,是什么原因造成的问题?

这是模型。

def create_model():
model = Sequential()
model.add(Conv2D(32, 3, 3,
padding='valid', 
input_shape=(100, 100, 3)))  
model.add(Activation('relu'))  
model.add(Conv2D(32, 3, 3))  
model.add(Activation('relu'))  
model.add(MaxPooling2D(pool_size=(2, 2)))  
model.add(Dropout(0.25))  

model.add(Conv2D(64, 3, 3, 
padding='valid'))  
model.add(Activation('relu'))  
model.add(Conv2D(64, 3, 3))  
model.add(Activation('relu'))  
model.add(MaxPooling2D(pool_size=(2, 2)))  
model.add(Dropout(0.25))  

model.add(Flatten())  
model.add(Dense(256))  
model.add(Activation('relu'))  
model.add(Dropout(0.5))
model.add(Dense(2))  
model.add(Activation('softmax'))  
return model

下面是我遇到的错误

<ipython-input-38-2c04f3481c07> in main()
14     x_train /= 255.0
15     x_test /= 255.0
16     model = create_model()
17     model = compile_model(model)
18 
<ipython-input-12-f222bdbd85f1> in create_model()
14                             padding='valid'))  
15     model.add(Activation('relu'))
16     model.add(Conv2D(64, 3, 3))
17     model.add(Activation('relu'))
18     model.add(MaxPooling2D(pool_size=(2, 2)))
/usr/local/lib/python3.7/dist-packages/tensorflow/python/training/tracking/base.py in_method_wrapper(self, *args, **kwargs)
627     self._self_setattr_tracking = False  # pylint: disable=protected-access
628     try:
629       result = method(self, *args, **kwargs)
630     finally:
631       self._self_setattr_tracking = previous_value  # pylint: disable=protected-access
/usr/local/lib/python3.7/dist-packages/keras/utils/traceback_utils.py in error_handler(*args, **kwargs)
65     except Exception as e:  # pylint: disable=broad-except
66       filtered_tb = _process_traceback_frames(e.__traceback__)
67       raise e.with_traceback(filtered_tb) from None
68     finally:
69       del filtered_tb
/usr/local/lib/python3.7/dist-packages/tensorflow/python/framework/ops.py in _create_c_op(graph, node_def, inputs, control_inputs, op_def)
2011   except errors.InvalidArgumentError as e:
2012     # Convert to ValueError for backwards compatibility.
2013     raise ValueError(e.message)
2014 
2015   return c_op

ValueError:调用layer "conv2d_19"(类型Conv2D)。

输入形状为[?]的{{node conv2d_19/Conv2D}} = Conv2D[T=DT_FLOAT, data_format="NHWC", dilations=[1,1,1,1], explicit_paddings=[], padding="VALID", strides=[1,3,3,1], use_cudnn_on_gpu=true](占位符,conv2d_19/Conv2D/ReadVariableOp)'的负尺寸大小:[?]1, 64],[3, 3, 64, 64]。

Call arguments received:•输入=特遣部队。张量(shape=(None, 1,1,64), dtype=float32)

你能提供完整的模型定义和你的火车数据的形状吗?然而,我猜可能有一个问题与维度排序在您的数据。

默认情况下,Convolution2D (https://keras.io/layers/convolutional/)期望输入的格式为(samples, rows, cols, channels),即"channels-last"。请确认您的数据是NHWC格式(样本、行、颜色、通道),而不是(样本、通道、行、颜色)。

相关内容

最新更新