列车运行时张力流错误_步骤。运行()

2024-04-25 15:28:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我一整天都在讨论这个问题,我在网上找不到解决办法。在

我在编码一个卷积神经网络来分类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)]]

Tags: runinpysizesessionlibpackagesusr
1条回答
网友
1楼 · 发布于 2024-04-25 15:28:33

在阅读代码时,问题源于^{}参数的形状。根据文件:

logits and labels must have the same shape [batch_size, num_classes] and the same dtype (either float16, float32, or float64).

您的代码调用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()替换为其对应的稀疏对应项^{},后者可以使用您正在使用的格式处理输入数据:

cross_entropy = tf.reduce_mean(
    tf.nn.sparse_softmax_cross_entropy_with_logits(prediction, y))

(另一种方法是使用^{}y转换为tf.nn.softmax_cross_entropy_with_logits()的适当的一种热编码,但这可能效率较低,因为它必须为目标值具体化一个潜在的大矩阵。)

请注意,出现此问题的运行时错误的原因是,在没有静态形状的情况下,y^{}是如何定义的。如果将其定义为向量,则在构建图形时会出现错误:

^{pr2}$

相关问题 更多 >