我一整天都在讨论这个问题,我在网上找不到解决办法。在
我在编码一个卷积神经网络来分类BW图像。我首先读取数据,准备网络架构,然后运行培训部分,但每次我在尝试培训时都会遇到这样的错误:
tensorflow.python.framework.errors_impl.InvalidArgumentError: Expected begin[0] == 0 (got -1) and size[0] == 0 (got 1) when input.dim_size(0) == 0
[[Node: Slice_1 = Slice[Index=DT_INT32, T=DT_INT32, _device="/job:localhost/replica:0/task:0/cpu:0"](Shape_2, Slice_1/begin, Slice_1/size)]]
我在网上找不到任何有用的东西,我。我不知道怎么了。非常感谢各位,我将下面的代码链接到您身上:
^{pr2}$操作名称编辑错误
Traceback (most recent call last):
File "/usr/lib/python3.5/site-packages/tensorflow/python/client/session.py", line 1021, in _do_call
return fn(*args)
File "/usr/lib/python3.5/site-packages/tensorflow/python/client/session.py", line 1003, in _run_fn
status, run_metadata)
File "/usr/lib/python3.5/contextlib.py", line 66, in __exit__
next(self.gen)
File "/usr/lib/python3.5/site-packages/tensorflow/python/framework/errors_impl.py", line 469, in raise_exception_on_not_ok_status
pywrap_tensorflow.TF_GetCode(status))
tensorflow.python.framework.errors_impl.InvalidArgumentError: Expected begin[0] == 0 (got -1) and size[0] == 0 (got 1) when input.dim_size(0) == 0
[[Node: Slice_1 = Slice[Index=DT_INT32, T=DT_INT32, _device="/job:localhost/replica:0/task:0/cpu:0"](Shape_2, Slice_1/begin, Slice_1/size)]]
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "convolutional_net.py", line 295, in <module>
train_step.run(feed_dict={x: train_images, y: train_labels, keep_prob: 0.5})
File "/usr/lib/python3.5/site-packages/tensorflow/python/framework/ops.py", line 1449, in run
_run_using_default_session(self, feed_dict, self.graph, session)
File "/usr/lib/python3.5/site-packages/tensorflow/python/framework/ops.py", line 3668, in _run_using_default_session
session.run(operation, feed_dict)
File "/usr/lib/python3.5/site-packages/tensorflow/python/client/session.py", line 766, in run
run_metadata_ptr)
File "/usr/lib/python3.5/site-packages/tensorflow/python/client/session.py", line 964, in _run
feed_dict_string, options, run_metadata)
File "/usr/lib/python3.5/site-packages/tensorflow/python/client/session.py", line 1014, in _do_run
target_list, options, run_metadata)
File "/usr/lib/python3.5/site-packages/tensorflow/python/client/session.py", line 1034, in _do_call
raise type(e)(node_def, op, message)
tensorflow.python.framework.errors_impl.InvalidArgumentError: Expected begin[0] == 0 (got -1) and size[0] == 0 (got 1) when input.dim_size(0) == 0
[[Node: Slice_1 = Slice[Index=DT_INT32, T=DT_INT32, _device="/job:localhost/replica:0/task:0/cpu:0"](Shape_2, Slice_1/begin, Slice_1/size)]]
Caused by op 'Slice_1', defined at:
File "convolutional_net.py", line 264, in <module>
cross_entropy = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(prediction, y))
File "/usr/lib/python3.5/site-packages/tensorflow/python/ops/nn_ops.py", line 1443, in softmax_cross_entropy_with_logits
labels = _flatten_outer_dims(labels)
File "/usr/lib/python3.5/site-packages/tensorflow/python/ops/nn_ops.py", line 1245, in _flatten_outer_dims
array_ops.shape(logits), [math_ops.sub(rank, 1)], [1])
File "/usr/lib/python3.5/site-packages/tensorflow/python/ops/array_ops.py", line 484, in slice
return gen_array_ops._slice(input_, begin, size, name=name)
File "/usr/lib/python3.5/site-packages/tensorflow/python/ops/gen_array_ops.py", line 2868, in _slice
name=name)
File "/usr/lib/python3.5/site-packages/tensorflow/python/framework/op_def_library.py", line 759, in apply_op
op_def=op_def)
File "/usr/lib/python3.5/site-packages/tensorflow/python/framework/ops.py", line 2240, in create_op
original_op=self._default_original_op, op_def=op_def)
File "/usr/lib/python3.5/site-packages/tensorflow/python/framework/ops.py", line 1128, in __init__
self._traceback = _extract_stack()
InvalidArgumentError (see above for traceback): Expected begin[0] == 0 (got -1) and size[0] == 0 (got 1) when input.dim_size(0) == 0
[[Node: Slice_1 = Slice[Index=DT_INT32, T=DT_INT32, _device="/job:localhost/replica:0/task:0/cpu:0"](Shape_2, Slice_1/begin, Slice_1/size)]]
在阅读代码时,问题源于^{} 参数的形状。根据文件:
您的代码调用
tf.nn.softmax_cross_entropy_with_logits(prediction, y)
,所以让我们看看参数的形状:prediction
是从convolutional_neural_network(x)
返回的值,其形状为[batch_size, N_CLASSES]
。(x
的占位符将batch_size
表示为None
,因此它可以是动态的。)y
定义为y = tf.placeholder(tf.int32)
。占位符没有形状信息,所以它是静态未知的(这在一定程度上解释了错误消息。。。详见下文)。为了找出y
的实际形状,我们可以看看您是如何给占位符提供的,它似乎是用一系列整数来填充它的,这些整数是从输入文件中解析出来的,其中整数表示相应示例的真正标签。若要解决此问题,应将} ,后者可以使用您正在使用的格式处理输入数据:
tf.nn.softmax_cross_entropy_with_logits()
替换为其对应的稀疏对应项^{(另一种方法是使用^{} 将
y
转换为tf.nn.softmax_cross_entropy_with_logits()
的适当的一种热编码,但这可能效率较低,因为它必须为目标值具体化一个潜在的大矩阵。)请注意,出现此问题的运行时错误的原因是,在没有静态形状的情况下,} 是如何定义的。如果将其定义为向量,则在构建图形时会出现错误:
^{pr2}$y
的^{相关问题 更多 >
编程相关推荐