维度必须相等,但对于’SparseSoftmaxCrossEntropyWithLogits’来说,实际维度分别是1和128

我在尝试使用TensorFlow中的常规神经网络读取png格式的图像时遇到了问题。我在读取数据步骤中无法处理标签,因此出现了错误。

我首先认为问题出在我创建批处理队列和洗牌时。这在tf.train.shuffle_batch中出现了问题,它期望的是1-D的输入,但实际上得到了3-D的形状。

我修复了这个问题,但随后在损失函数中又出现了另一个错误

子代码在这里:链接

问题是:

Traceback (most recent call last): File “SVHN.py”, line 280, in tf.app.run() File “/home/ashwaq/anaconda3/lib/python3.6/site-packages/tensorflow/python/platform/app.py”, line 48, in run _sys.exit(main(_sys.argv[:1] + flags_passthrough)) File “SVHN.py”, line 269, in main train_op = SVHN_architecture_AND_optimize() File “SVHN.py”, line 203, in SVHN_architecture_AND_optimize cross_entropy = tf.nn.sparse_softmax_cross_entropy_with_logits(logits = logits, labels = labels) File “/home/ashwaq/anaconda3/lib/python3.6/site-packages/tensorflow/python/ops/nn_ops.py”, line 1742, in sparse_softmax_cross_entropy_with_logits precise_logits, labels, name=name) File “/home/ashwaq/anaconda3/lib/python3.6/site-packages/tensorflow/python/ops/gen_nn_ops.py”, line 2418, in _sparse_softmax_cross_entropy_with_logits features=features, labels=labels, name=name) File “/home/ashwaq/anaconda3/lib/python3.6/site-packages/tensorflow/python/framework/op_def_library.py”, line 768, in apply_op op_def=op_def) File “/home/ashwaq/anaconda3/lib/python3.6/site-packages/tensorflow/python/framework/ops.py”, line 2338, in create_op set_shapes_for_outputs(ret) File “/home/ashwaq/anaconda3/lib/python3.6/site-packages/tensorflow/python/framework/ops.py”, line 1719, in set_shapes_for_outputs shapes = shape_func(op) File “/home/ashwaq/anaconda3/lib/python3.6/site-packages/tensorflow/python/framework/ops.py”, line 1669, in call_with_requiring return call_cpp_shape_fn(op, require_shape_fn=True) File “/home/ashwaq/anaconda3/lib/python3.6/site-packages/tensorflow/python/framework/common_shapes.py”, line 610, in call_cpp_shape_fn debug_python_shape_fn, require_shape_fn) File “/home/ashwaq/anaconda3/lib/python3.6/site-packages/tensorflow/python/framework/common_shapes.py”, line 676, in _call_cpp_shape_fn_impl raise ValueError(err.message) ValueError: Dimensions must be equal, but are 1 and 128 for ‘SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits’ (op: ‘SparseSoftmaxCrossEntropyWithLogits’) with input shapes: [1,10], [128].


回答:

错误的原因是只有1张输入图像被传递给了SparseSoftmaxEntropyWithLogits,而不是一个完整的批次。导致问题的是这行代码:

# 将单个输入的`image`更改为批处理的`images`images = tf.reshape(images, [-1, IMAGE_SIZE, IMAGE_SIZE, depth]) 

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注