刚开始学习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格式(样本、行、颜色、通道),而不是(样本、通道、行、颜色)。