尺寸必须相等,但对于'SparseSoftmaxCrossEntropyWithLogits,尺寸为1和128

时间:2017-07-07 20:54:49

标签: image-processing machine-learning tensorflow deep-learning

我尝试使用张量流中的传统神经网络将图像读取为png格式。我遇到了一个问题,我无法在读取数据步骤中处理标签,因此,它给了我一个错误。

我认为当我创建批处理队列和随机播放时,问题就出现了。 这是 tf.train.shuffle_batch 期望的1-D中的问题,但实际上它的形状为3-D。

我解决了这个问题。然后它给了我损失函数

中的另一个错误

子码为here

问题是::

  
    

回溯(最近一次呼叫最后一次):文件“SVHN.py”,第280行,in         tf.app.run()文件“/home/ashwaq/anaconda3/lib/python3.6/site-packages/tensorflow/python/platform/app.py”,     第48行,在运行中         _sys.exit(main(_sys.argv [:1] + flags_passthrough))文件“SVHN.py”,第269行,主要         train_op = SVHN_architecture_AND_optimize()文件“SVHN.py”,第203行,在SVHN_architecture_AND_optimize中         cross_entropy = tf.nn.sparse_softmax_cross_entropy_with_logits(logits = logits,labels     =标签)文件“/home/ashwaq/anaconda3/lib/python3.6/site-packages/tensorflow/python/ops/nn_ops.py”,     第1742行,在sparse_softmax_cross_entropy_with_logits中         precise_logits,labels,name = name)文件“/home/ashwaq/anaconda3/lib/python3.6/site-packages/tensorflow/python/ops/gen_nn_ops.py”,     第2418行,在_sparse_softmax_cross_entropy_with_logits中         features = features,labels = labels,name = name)文件“/home/ashwaq/anaconda3/lib/python3.6/site-packages/tensorflow/python/framework/op_def_library.py”,     第768行,在apply_op中         op_def = op_def)文件“/home/ashwaq/anaconda3/lib/python3.6/site-packages/tensorflow/python/framework/ops.py”,     第2338行,在create_op中         set_shapes_for_outputs(ret)文件“/home/ashwaq/anaconda3/lib/python3.6/site-packages/tensorflow/python/framework/ops.py”,     第1719行,在set_shapes_for_outputs中         shapes = shape_func(op)文件“/home/ashwaq/anaconda3/lib/python3.6/site-packages/tensorflow/python/framework/ops.py”,     第1669行,在call_with_requiring中         return call_cpp_shape_fn(op,require_shape_fn = True)文件“/home/ashwaq/anaconda3/lib/python3.6/site-packages/tensorflow/python/framework/common_shapes.py”,     第610行,在call_cpp_shape_fn中         debug_python_shape_fn,require_shape_fn)文件“/home/ashwaq/anaconda3/lib/python3.6/site-packages/tensorflow/python/framework/common_shapes.py”,     第676行,在_call_cpp_shape_fn_impl中         raise ValueError(err.message)ValueError:Dimensions必须相等,但是为1和128     'SparseSoftmaxCrossEntropyWithLogits / SparseSoftmaxCrossEntropyWithLogits'     (op:'SparseSoftmaxCrossEntropyWithLogits')输入形状:[1,10],     [128]

  

2 个答案:

答案 0 :(得分:0)

我无法查看您的代码(链接无效或dropbox文件不公开),但根据错误,您的标签形状错误。对于SparseSoftmaxCrossEntropyWithLogits,标签的形状应为[None,],其中None是批量维度 - 即标签应为整数,而不是单热编码向量。

答案 1 :(得分:0)

出错的原因是因为只有1个输入图像传递给SparseSoftmaxEntropyWithLogits而不是完整批次。这一行造成了问题:

# change your single input `image` to a batch of `images`
images = tf.reshape(images, [-1, IMAGE_SIZE, IMAGE_SIZE, depth])