我尝试使用张量流中的传统神经网络将图像读取为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]
答案 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])