ValueError: невозможно разделить ось размером 85 на части размера [2,2,1,20] обучение керасу - PullRequest
0 голосов
/ 08 апреля 2020

Я получил эту ошибку в начале тренировки, что это значит? нет четких указаний на причину ошибки / источник проблемы .................................. .................................................. .................................................. ........................

Epoch 1/10
Traceback (most recent call last):
  File "train.py", line 199, in <module>
    app.run(main)
  File "/usr/local/lib/python3.6/dist-packages/absl/app.py", line 299, in run
    _run_main(main, args)
  File "/usr/local/lib/python3.6/dist-packages/absl/app.py", line 250, in _run_main
    sys.exit(main(argv))
  File "train.py", line 194, in main
    validation_data=val_dataset)
  File "/root/.local/lib/python3.6/site-packages/tensorflow/python/keras/engine/training.py", line 71, in _method_wrapper
    return method(self, *args, **kwargs)
  File "/root/.local/lib/python3.6/site-packages/tensorflow/python/keras/engine/training.py", line 920, in fit
    tmp_logs = train_function(iterator)
  File "/root/.local/lib/python3.6/site-packages/tensorflow/python/eager/def_function.py", line 608, in __call__
    result = self._call(*args, **kwds)
  File "/root/.local/lib/python3.6/site-packages/tensorflow/python/eager/def_function.py", line 655, in _call
    self._initialize(args, kwds, add_initializers_to=initializers)
  File "/root/.local/lib/python3.6/site-packages/tensorflow/python/eager/def_function.py", line 535, in _initialize
    *args, **kwds))
  File "/root/.local/lib/python3.6/site-packages/tensorflow/python/eager/function.py", line 2447, in _get_concrete_function_internal_garbage_collected
    graph_function, _, _ = self._maybe_define_function(args, kwargs)
  File "/root/.local/lib/python3.6/site-packages/tensorflow/python/eager/function.py", line 2775, in _maybe_define_function
    graph_function = self._create_graph_function(args, kwargs)
  File "/root/.local/lib/python3.6/site-packages/tensorflow/python/eager/function.py", line 2665, in _create_graph_function
    capture_by_value=self._capture_by_value),
  File "/root/.local/lib/python3.6/site-packages/tensorflow/python/framework/func_graph.py", line 981, in func_graph_from_py_func
    func_outputs = python_func(*func_args, **func_kwargs)
  File "/root/.local/lib/python3.6/site-packages/tensorflow/python/eager/def_function.py", line 446, in wrapped_fn
    return weak_wrapped_fn().__wrapped__(*args, **kwds)
  File "/root/.local/lib/python3.6/site-packages/tensorflow/python/framework/func_graph.py", line 968, in wrapper
    raise e.ag_error_metadata.to_exception(e)
ValueError: in user code:

    /root/.local/lib/python3.6/site-packages/tensorflow/python/keras/engine/training.py:630 train_function  *
        return step_function(self, iterator)
    /root/.local/lib/python3.6/site-packages/tensorflow/python/keras/engine/training.py:620 step_function  **
        outputs = model.distribute_strategy.run(run_step, args=(data,))
    /root/.local/lib/python3.6/site-packages/tensorflow/python/distribute/distribute_lib.py:952 run
        return self._extended.call_for_each_replica(fn, args=args, kwargs=kwargs)
    /root/.local/lib/python3.6/site-packages/tensorflow/python/distribute/distribute_lib.py:2292 call_for_each_replica
        return self._call_for_each_replica(fn, args, kwargs)
    /root/.local/lib/python3.6/site-packages/tensorflow/python/distribute/distribute_lib.py:2651 _call_for_each_replica
        return fn(*args, **kwargs)
    /root/.local/lib/python3.6/site-packages/tensorflow/python/keras/engine/training.py:613 run_step  **
        outputs = model.train_step(data)
    /root/.local/lib/python3.6/site-packages/tensorflow/python/keras/engine/training.py:573 train_step
        y, y_pred, sample_weight, regularization_losses=self.losses)
    /root/.local/lib/python3.6/site-packages/tensorflow/python/keras/engine/compile_utils.py:204 __call__
        loss_value = loss_obj(y_t, y_p, sample_weight=sw)
    /root/.local/lib/python3.6/site-packages/tensorflow/python/keras/losses.py:145 __call__
        losses = self.call(y_true, y_pred)
    /root/.local/lib/python3.6/site-packages/tensorflow/python/keras/losses.py:248 call
        return self.fn(y_true, y_pred, **self._fn_kwargs)
    /content/drive/My Drive/yolov3-tf2/yolov3_tf2/models.py:264 yolo_loss
        y_pred, anchors, classes)
    /content/drive/My Drive/yolov3-tf2/yolov3_tf2/models.py:155 yolo_boxes
        pred, (2, 2, 1, classes), axis=-1)
    /root/.local/lib/python3.6/site-packages/tensorflow/python/ops/array_ops.py:1978 split
        value=value, size_splits=size_splits, axis=axis, num_split=num, name=name)
    /root/.local/lib/python3.6/site-packages/tensorflow/python/ops/gen_array_ops.py:9881 split_v
        num_split=num_split, name=name)
    /root/.local/lib/python3.6/site-packages/tensorflow/python/framework/op_def_library.py:744 _apply_op_helper
        attrs=attr_protos, op_def=op_def)
    /root/.local/lib/python3.6/site-packages/tensorflow/python/framework/func_graph.py:595 _create_op_internal
        compute_device)
    /root/.local/lib/python3.6/site-packages/tensorflow/python/framework/ops.py:3470 _create_op_internal
        op_def=op_def)
    /root/.local/lib/python3.6/site-packages/tensorflow/python/framework/ops.py:1960 __init__
        control_input_ops, op_def)
    /root/.local/lib/python3.6/site-packages/tensorflow/python/framework/ops.py:1800 _create_c_op
        raise ValueError(str(e))

    ValueError: can't split axis of size 85 into pieces of size [2,2,1,20] for '{{node yolo_loss/split}} = SplitV[T=DT_FLOAT, Tlen=DT_INT32, num_split=4](model/layer_207_output_0/layer_206_lambda/Reshape, yolo_loss/Const, yolo_loss/split/split_dim)' with input shapes: [?,?,?,3,85], [4], [] and with computed input tensors: input[1] = <2 2 1 20>, input[2] = <-1>

1 Ответ

1 голос
/ 08 апреля 2020

это происходит из-за отсутствия одинакового количества узлов: здесь 85 нельзя преобразовать или изменить размер на 2 * 2 * 1 * 20, что равно 80, вы можете изменить или изменить размер только значения узла равны
В вашем случае 85 не равно 2 * 2 * 1 * 20 (80)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...