当前位置: 首页 > 知识库问答 >
问题:

ValueError:对于输入形状,尺寸必须相等

裴宏壮
2023-03-14

我写了这段代码。我的输入形状是(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.
# 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\u algo\u keras.py',wdir='/user/Project/SM/src')中随机启动突触权重:模型:“sequential\u 3”

conv2d_12(Conv2D)(无,3, 100, 16) 14416

激活18(激活)(无、3100、16)0

conv2d_13(conv2d)(无、3100、32)4640

激活19(激活)(无、3100、32)0

最大池2D池6(最大池2(无、2、50、32)0

dropout_9(辍学)(无,2, 50, 32) 0

激活20(激活)(无、2、50、32)0

conv2d_15(conv2d)(无、2、50、32)9248

activation_21(激活)(无,2, 50, 32) 0

max_pooling2d_7(MaxPooling2(无,1, 25, 32) 0

dropout_10(辍学)(无,1, 25, 32) 0

展平3(展平)(无,800)0

密集型_6(密集型)(无,256)205056

激活22(激活)(无,256)0

辍学11(辍学)(无,256)0

密集型_7(密集型)(无,10)2570

总参数:245178可培训参数:245178不可培训参数:0

纪元1/2000回溯(最近一次呼叫最后一次):

文件"/user/Project/SM/src/ann_algo_keras.py",第272行,在列(输入,输出,image_shape)

文件“/user/Project/SM/src/ann_-algo_-keras.py”,第204行,in-train model.fit(X_-train,y_-train,批量大小,年代,验证数据=(X_-test,y_-test),use_-multiprocessing=True)

文件“/home/user/.local/lib/python3.8/site packages/tensorflow/python/keras/engine/training.py”,第108行,in_方法_包装返回方法(self,*args,**kwargs)

文件“/home/user/.local/lib/python3.8/site packages/tensorflow/python/keras/engine/training.py”,第1098行,在fit tmp_logs=train_函数(迭代器)中

文件“/home/user/.local/lib/python3.8/site packages/tensorflow/python/eager/def_function.py”,第780行,在call result=self._call(*args,**kwds)中

文件“/home/user/.local/lib/python3.8/site packages/tensorflow/python/eager/def_function.py”,第823行,在调用self.\u初始化(args,kwds,add_initializers\u to=初始化器)

文件“/home/user/.local/lib/python3.8/site packages/tensorflow/python/eager/def_function.py”,第696行,在“初始化自我”、“有状态”fn.“获取具体功能”内部“垃圾”收集(#pylint:disable=protected access

file"/home/user/. local/lib/python3.8/site-包/tenstorflow/python/渴望/function.py",第2855行,_get_concrete_function_internal_garbage_collectedgraph_function,_,_=自我。_maybe_define_function(args,kwargs)

文件“/home/user/.local/lib/python3.8/site packages/tensorflow/python/eager/function.py”,第3213行,在_-maybe\u-define\u-function-graph\u-function=self._-create\u-graph\u-function(args,kwargs)

file"/home/user/. local/lib/python3.8/site-包/tenstorflow/python/渴望/function.py",第3065行,_create_graph_functionfunc_graph_module.func_graph_from_py_func(

文件“/home/user/.local/lib/python3.8/site packages/tensorflow/python/framework/func_graph.py”,第986行,func_graph_from_py_func_outputs=python_func(*func_args,**func_kwargs)

文件“/home/user/.local/lib/python3.8/site packages/tensorflow/python/eager/def_function.py”,第600行,在wrapped_fn return weak_wrapped_fn()中。wrapped(*args,**kwds)

文件“/home/user/.local/lib/python3.8/site packages/tensorflow/python/framework/func_graph.py”,第973行,在包装器raise e.ag_error_metadata.to_exception(e)中

在用户代码中:

/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].

共有2个答案

萧亦
2023-03-14

您的输入顺序不正确,通道应最后关闭。所以

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"])
岳茂
2023-03-14

只是与输入形状中通道的位置混淆。在Keras中,输入形状应为HxWxC,而不是像PyTorch中那样的CxHxW

model.add(Conv2D(filters=16, kernel_size=(3, 3),kernel_initializer=init,
                        padding='same', input_shape=(100,100,3)))
 类似资料:
  • 问题内容: 我试图用一层构建CNN,但是我有一些问题。确实,编译器告诉我 ValueError:检查模型输入时出错:预期conv1d_1_input具有3维,但数组的形状为(569,30) 这是代码 问题答案: td; LR你需要重塑你的数据有一个 空间 维度是有道理的: 本质上重塑如下所示的数据集: 至: 解释和例子 通常,卷积在空间维度上起作用。内核在产生张量的维度上“卷积”。对于Conv1D

  • 问题内容: 我有一个问题。 我正在尝试通过使用以下代码来复制20x361矩阵的最后一列: 但是我得到了错误: ValueError:所有输入数组的维数必须相同 但是,我已经通过检查矩阵尺寸 我得到 (20公升)(20公升,361公升) 所以尺寸匹配?错误在哪里? 问题答案: 如果我从3x4数组开始,然后将3x1数组与轴1连接起来,则会得到3x5数组: 请注意,两个要连接的输入都具有2维。 省略形状

  • 问题内容: 我使用SciPy和scikit-learn来训练和应用多项朴素贝叶斯分类器进行二进制文本分类。准确地讲,我使用该模块来创建稀疏矩阵,该稀疏矩阵包含来自文本的单词特征计数,并使用该模块作为分类器实现,用于在训练数据上训练分类器并将其应用于测试数据。 的输入是表示为unicode字符串的文本文档列表。训练数据比测试数据大得多。我的代码如下所示(简化): 问题:一 接到电话,我就知道了。根据

  • 我试图用PyTorch LSTM训练一个简单的2层神经网络,但我很难解释PyTorch留档。具体来说,我不太确定如何处理我的训练数据。 我想做的是通过小批次在一个非常大的数据集上训练我的网络,每个批次有100个元素长。每个数据元素将具有5个特征。留档声明层的输入应该是形状(seq_len,batch_size,input_size)。我应该如何调整输入? 我一直在关注这篇文章:https://di

  • 使用网格的列来设置输入框的大小,如 .large-6, .medium-6, 等。 更多网格系统知识,可以点击 相等大小列 以下演示了相等大小列的实例: 实例<form>   <div>     <div>       <label>medium-4 (100% on small, stacked)         <input type="text" placeholder="Name">   

  • 问题内容: 我试图使用keras训练LSTM模型,但我认为这里出了点问题。 我有一个错误 ValueError:检查输入时出错:预期lstm_17_input具有3个维,但数组的形状为(10000,0,20) 虽然我的代码看起来像 其中已的形状和前几个数据点像 并且具有这样的形状的,它是二进制(0/1)标签阵列。 有人可以指出我在哪里错了吗? 问题答案: 为了完整起见,这是发生了什么。 首先,像K