Python ValueError:对于输入形状,尺寸必须相等
我已经写了这段代码。我的输入形状是(100 x100 X3)。我对深度学习还不熟悉。 我在这方面花了太多时间,但无法解决问题。非常感谢您的帮助Python ValueError:对于输入形状,尺寸必须相等,python,python-3.x,django,tensorflow,keras,Python,Python 3.x,Django,Tensorflow,Keras,我已经写了这段代码。我的输入形状是(100 x100 X3)。我对深度学习还不熟悉。 我在这方面花了太多时间,但无法解决问题。非常感谢您的帮助 init = tf.random_normal_initializer(mean=0.0, stddev=0.05, seed=None) input_image=Input(shape=image_shape) # input: 100x100 images with 3 channels -> (3, 100, 100) tensors.
init = tf.random_normal_initializer(mean=0.0, stddev=0.05, seed=None)
input_image=Input(shape=image_shape)
# input: 100x100 images with 3 channels -> (3, 100, 100) tensors.
# this applies 32 convolution filters of size 3x3 each.
model=Sequential()
model.add(Conv2D(filters=16, kernel_size=(3, 3),kernel_initializer=init,
padding='same', input_shape=(3,100,100)))
model.add(Activation('relu'))
model.add(Conv2D(filters=32,kernel_size=(3, 3),padding="same"))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2),padding="same"))
model.add(Dropout(0.25))
model.add(Conv2D(filters=32,kernel_size=(3, 3),padding="same"))
model.add(Activation('relu'))
model.add(Conv2D(filters=32, kernel_size=(3, 3),padding="same"))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2),padding="same"))
model.add(Dropout(0.25))
model.add(Flatten())
# Note: Keras does automatic shape inference.
model.add(Dense(256))
model.add(Activation('relu'))
model.add(Dropout(0.5))
model.add(Dense(10))
model.add(Activation('softmax'))
model.summary()
sgd = SGD(lr=0.1, decay=1e-6, momentum=0.9, nesterov=True)
len(model.weights)
model.compile(optimizer="Adam", loss="mse", metrics=["mae", "acc"])
错误:
在[15]中:运行文件('/user/Project/SM/src/ann_algo_keras.py',wdir='/user/Project/SM/src')
随机起始突触重量:
型号:“顺序_3”
图层(类型)输出形状参数# conv2d_12(conv2d)(无、3100、16)14416
激活18(激活)(无、3100、16)0
conv2d_13(conv2d)(无、3100、32)4640
激活19(激活)(无、3100、32)0
最大池2D池6(最大池2(无、2、50、32)0
辍学9(辍学)(无、2、50、32)0
conv2d_14(conv2d)(无、2、50、32)9248
激活20(激活)(无、2、50、32)0
conv2d_15(conv2d)(无、2、50、32)9248
激活21(激活)(无、2、50、32)0
最大池2D池7(最大池2(无、1、25、32)0
辍学10(辍学)(无、1、25、32)0
展平3(展平)(无,800)0
密集型_6(密集型)(无,256)205056
激活22(激活)(无,256)0
辍学11(辍学)(无,256)0
密集型_7(密集型)(无,10)2570
激活23(激活)(无,10)0 总参数:245178 可培训参数:245178 不可训练参数:0
纪元1/2000 回溯(最近一次呼叫最后一次): 文件“/user/Project/SM/src/ann_algo_keras.py”,第272行,在 列车(输入、输出、图像形状) 文件“/user/Project/SM/src/ann_algo_keras.py”,第204行,列车中 模型.fit(X_序列、y_序列、批量大小、年代、验证数据=(X_测试、y_测试),使用多处理=真) 文件“/home/user/.local/lib/python3.8/site packages/tensorflow/python/keras/engine/training.py”,第108行,在方法包装中 返回方法(self、*args、**kwargs) 文件“/home/user/.local/lib/python3.8/site-packages/tensorflow/python/keras/engine/training.py”,第1098行,适合 tmp_logs=训练函数(迭代器) 文件“/home/user/.local/lib/python3.8/site packages/tensorflow/python/eager/def_function.py”,第780行,在调用中 结果=自身调用(*args,**kwds) 文件“/home/user/.local/lib/python3.8/site packages/tensorflow/python/eager/def_function.py”,第823行,在调用中 self.\u初始化(参数、KWD、添加初始值设定项到=初始值设定项) 文件“/home/user/.local/lib/python3.8/site packages/tensorflow/python/eager/def_function.py”,第696行,在 self._stateful_fn._get_concrete_function_internal_garbage_collected(#pylint:disable=protected access 文件“/home/user/.local/lib/python3.8/site packages/tensorflow/python/eager/function.py”,第2855行,位于“获取”\u具体”\u函数\u内部\u垃圾收集 图函数,自我,可能定义函数(args,kwargs) 文件“/home/user/.local/lib/python3.8/site packages/tensorflow/python/eager/function.py”,第3213行,在函数定义中 graph\u function=self.\u create\u graph\u function(args,kwargs) 文件“/home/user/.local/lib/python3.8/site packages/tensorflow/python/eager/function.py”,第3065行,在创建图形函数中 func_graph_module.func_graph_from_py_func( 文件“/home/user/.local/lib/python3.8/site packages/tensorflow/python/framework/func_graph.py”,第986行,在func_graph_中,从_py_func开始 func_outputs=python_func(*func_args,**func_kwargs) 文件“/home/user/.local/lib/python3.8/site packages/tensorflow/python/eager/def_function.py”,第600行,包装为 返回弱包装的(包装的(*args,**kwds) 包装器中的文件“/home/user/.local/lib/python3.8/site packages/tensorflow/python/framework/func_graph.py”,第973行 将e.ag\u错误\u元数据引发到\u异常(e) ValueError:在用户代码中:
/home/user/.local/lib/python3.8/site-packages/tensorflow/python/keras/engine/training.py:806 train_function *
return step_function(self, iterator)
/home/user/.local/lib/python3.8/site-packages/tensorflow/python/keras/engine/training.py:796 step_function **
outputs = model.distribute_strategy.run(run_step, args=(data,))
/home/user/.local/lib/python3.8/site-packages/tensorflow/python/distribute/distribute_lib.py:1211 run
return self._extended.call_for_each_replica(fn, args=args, kwargs=kwargs)
/home/catherin/.local/lib/python3.8/site-packages/tensorflow/python/distribute/distribute_lib.py:2585 call_for_each_replica
return self._call_for_each_replica(fn, args, kwargs)
/home/catherin/.local/lib/python3.8/site-packages/tensorflow/python/distribute/distribute_lib.py:2945 _call_for_each_replica
return fn(*args, **kwargs)
/home/catherin/.local/lib/python3.8/site-packages/tensorflow/python/keras/engine/training.py:789 run_step **
outputs = model.train_step(data)
/home/catherin/.local/lib/python3.8/site-packages/tensorflow/python/keras/engine/training.py:748 train_step
loss = self.compiled_loss(
/home/catherin/.local/lib/python3.8/site-packages/tensorflow/python/keras/engine/compile_utils.py:204 __call__
loss_value = loss_obj(y_t, y_p, sample_weight=sw)
/home/catherin/.local/lib/python3.8/site-packages/tensorflow/python/keras/losses.py:149 __call__
losses = ag_call(y_true, y_pred)
/home/user/.local/lib/python3.8/site-packages/tensorflow/python/keras/losses.py:253 call **
return ag_fn(y_true, y_pred, **self._fn_kwargs)
/home/user/.local/lib/python3.8/site-packages/tensorflow/python/util/dispatch.py:201 wrapper
return target(*args, **kwargs)
/home/user/.local/lib/python3.8/site-packages/tensorflow/python/keras/losses.py:1195 mean_squared_error
return K.mean(math_ops.squared_difference(y_pred, y_true), axis=-1)
/home/user/.local/lib/python3.8/site-packages/tensorflow/python/ops/gen_math_ops.py:10398 squared_difference
_, _, _op, _outputs = _op_def_library._apply_op_helper(
/home/user/.local/lib/python3.8/site-packages/tensorflow/python/framework/op_def_library.py:742 _apply_op_helper
op = g._create_op_internal(op_type_name, inputs, dtypes=None,
/home/user/.local/lib/python3.8/site-packages/tensorflow/python/framework/func_graph.py:591 _create_op_internal
return super(FuncGraph, self)._create_op_internal( # pylint: disable=protected-access
/home/user/.local/lib/python3.8/site-packages/tensorflow/python/framework/ops.py:3477 _create_op_internal
ret = Operation(
/home/user/.local/lib/python3.8/site-packages/tensorflow/python/framework/ops.py:1974 __init__
self._c_op = _create_c_op(self._graph, node_def, inputs,
/home/user/.local/lib/python3.8/site-packages/tensorflow/python/framework/ops.py:1815 _create_c_op
raise ValueError(str(e))
ValueError: Dimensions must be equal, but are 10 and 10000 for '{{node mean_squared_error/SquaredDifference}} = SquaredDifference[T=DT_FLOAT](sequential_3/activation_23/Softmax, IteratorGetNext:1)' with input shapes: [?,10], [?,1,10000].
只是与输入形状中通道的位置混淆。在Keras中,输入形状应为
HxWxC
,而不是像PyTorch中那样的CxHxW
model.add(Conv2D(filters=16, kernel_size=(3, 3),kernel_initializer=init,
padding='same', input_shape=(100,100,3)))
只是与输入形状中通道的位置混淆。在Keras中,输入形状应为
HxWxC
,而不是像PyTorch中那样的CxHxW
model.add(Conv2D(filters=16, kernel_size=(3, 3),kernel_initializer=init,
padding='same', input_shape=(100,100,3)))
你的输入顺序不正确,通道应该是正确的。所以
model.add(Conv2D(filters=16, kernel_size=(3, 3),kernel_initializer=init,
padding='same', input_shape=(100,100,3)))
此外,我假设您正在尝试进行分类。此外,一些指标用于回归,例如“mae”。您可以将其更改为:
model.compile(optimizer="adam", loss="categorical_crossentropy", metrics=["acc"])
你的输入顺序不正确,通道应该是正确的。所以
model.add(Conv2D(filters=16, kernel_size=(3, 3),kernel_initializer=init,
padding='same', input_shape=(100,100,3)))
此外,我假设您正在尝试进行分类。此外,一些指标用于回归,例如“mae”。您可以将其更改为:
model.compile(optimizer="adam", loss="categorical_crossentropy", metrics=["acc"])
谢谢,我的输入是shape[“batch shape”,3100100],但是在运行时,我得到了这个错误“ValueError:input 0 of layer sequential_2与layer不兼容:输入形状的轴-1应该有值3,但收到的输入是shape[None,3,100,100]”你能帮帮我吗out@caty数据的形状需要是
[“batch shape”,100100,3]
。谢谢,我的输入是形状[“batch shape”,3100100],但是在运行时,我得到了这个错误“ValueError:layer sequential_2的输入0与layer不兼容:输入形状的轴-1应具有值3,但接收到带有形状[None,3,100,100]的输入”您能帮助我吗out@caty数据的形状需要是[“批处理形状”,100100,3]
。