Tensorflow ValueError:can';t将尺寸为85的轴拆分为尺寸为[2,2,1,20]的块

Tensorflow ValueError:can';t将尺寸为85的轴拆分为尺寸为[2,2,1,20]的块,tensorflow,keras,Tensorflow,Keras,我在训练一开始就犯了这个错误,这意味着什么?没有明确指示是什么导致错误/问题的根源 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,

我在训练一开始就犯了这个错误,这意味着什么?没有明确指示是什么导致错误/问题的根源

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/10纪元
回溯(最近一次呼叫最后一次):
文件“train.py”,第199行,在
应用程序运行(主)
文件“/usr/local/lib/python3.6/dist-packages/absl/app.py”,第299行,运行中
_运行_main(main,args)
文件“/usr/local/lib/python3.6/dist-packages/absl/app.py”,第250行,在主
系统出口(主(argv))
文件“train.py”,第194行,在main中
验证(数据=val(数据集)
文件“/root/.local/lib/python3.6/site packages/tensorflow/python/keras/engine/training.py”,第71行,在方法包装中
返回方法(self、*args、**kwargs)
文件“/root/.local/lib/python3.6/site packages/tensorflow/python/keras/engine/training.py”,第920行
tmp_logs=训练函数(迭代器)
文件“/root/.local/lib/python3.6/site packages/tensorflow/python/eager/def_function.py”,第608行,在调用中__
结果=自身调用(*args,**kwds)
文件“/root/.local/lib/python3.6/site packages/tensorflow/python/eager/def_function.py”,第655行,在调用中
self.\u初始化(参数、KWD、添加初始值设定项到=初始值设定项)
文件“/root/.local/lib/python3.6/site packages/tensorflow/python/eager/def_function.py”,第535行,在
*args,**科威特第纳尔)
文件“/root/.local/lib/python3.6/site packages/tensorflow/python/eager/function.py”,第2447行,位于“获取”\u具体\u函数\u内部\u垃圾收集”中
图函数,自我,可能定义函数(args,kwargs)
文件“/root/.local/lib/python3.6/site packages/tensorflow/python/eager/function.py”,第2775行,在函数定义中
graph\u function=self.\u create\u graph\u function(args,kwargs)
文件“/root/.local/lib/python3.6/site packages/tensorflow/python/eager/function.py”,第2665行,在创建图形函数中
按值捕获=自身。_按值捕获),
文件“/root/.local/lib/python3.6/site packages/tensorflow/python/framework/func_graph.py”,第981行,在func_graph_中,从_py_func开始
func_outputs=python_func(*func_args,**func_kwargs)
文件“/root/.local/lib/python3.6/site packages/tensorflow/python/eager/def_function.py”,第446行,包装为
返回弱_-wrapped_-fn()
包装器中的文件“/root/.local/lib/python3.6/site packages/tensorflow/python/framework/func_graph.py”,第968行
将e.ag\u错误\u元数据引发到\u异常(e)
ValueError:在用户代码中:
/root/.local/lib/python3.6/site packages/tensorflow/python/keras/engine/training.py:630 train_函数*
返回步骤_函数(self、迭代器)
/root/.local/lib/python3.6/site-packages/tensorflow/python/keras/engine/training.py:620步函数**
输出=模型。分配策略。运行(运行步骤,参数=(数据,)
/root/.local/lib/python3.6/site packages/tensorflow/python/distribute/distribute_lib.py:952运行
返回self.\u扩展。为每个\u副本调用\u(fn,args=args,kwargs=kwargs)
/root/.local/lib/python3.6/site packages/tensorflow/python/distribute/distribute\u lib.py:2292为每个\u副本调用\u
返回自我。为每个副本(fn、ARG、kwargs)调用
/root/.local/lib/python3.6/site packages/tensorflow/python/distribute/distribute_lib.py:2651 _为每个副本调用
返回fn(*args,**kwargs)
/root/.local/lib/python3.6/site-packages/tensorflow/python/keras/engine/training.py:613运行步骤**
输出=型号列车步进(数据)
/root/.local/lib/python3.6/site packages/tensorflow/python/keras/engine/training.py:573 train\u步骤
y、 y_pred,样本_权重,正则化_损失=自身损失)
/root/.local/lib/python3.6/site packages/tensorflow/python/keras/engine/compile\u utils.py:204\u调用__
损耗值=损耗对象(y\u t,y\u p,样品重量=sw)
/root/.local/lib/python3.6/site packages/tensorflow/python/keras/loss.py:145\u调用__
损失=自我调用(y_true,y_pred)
/root/.local/lib/python3.6/site packages/tensorflow/python/keras/loss.py:248调用
返回self.fn(y_true,y_pred,**self.\u fn\u kwargs)
/content/drive/My drive/yolov3-tf2/yolov3\u tf2/models.py:264 yolo\u丢失
y_pred、锚、类)
/content/drive/My drive/yolov3-tf2/yolov3_tf2/models.py:155个yolo_框
pred,(2,2,1,类),轴=-1)
/root/.local/lib/python3.6/site-packages/tensorflow/python/ops/array_-ops.py:1978拆分
value=value,size\u splits=size\u splits,axis=axis,num\u split=num,name=name)
/root/.local/lib/python3.6/site packages/tensorflow/python/ops/gen_array_ops.py:9881 split_v
num\u split=num\u split,name=name)
/root/.local/lib/python3.6/site packages/tensorflow/python/framework/op_def_library.py:744\u apply_op_helper
attrs=attr_protos,op_def=op_def)
/root/.local/lib/python3.6/site packages/tensorflow/python/framework/func\u graph.py:595\u create\u op\u internal
计算机(U设备)
/root/.local/lib/python3.6/site packages/tensorflow/python/framework/ops.py:3470\u create\u op\u internal
op_def=op_def)
/root/.local/lib/python3.6/site packages/tensorflow/python/framework/ops.py:1960\uu init__
控制(输入操作,操作定义)
/root/.local/lib/python3.6/site packages/tensorflow/python/framework/ops.py:1800\u create\u c\u op
提升值错误(str(e))
ValueError:无法将大小为85的轴拆分为大小为[2,2,1,20]的碎片,因为“{node yolo_loss/split}}=SplitV[t=DT_FLOAT,Tlen=DT_INT32,num_split=4](模型/层_207;_输出_0/layer_206_lambda/重塑,yolo_loss/Const,yolo_loss/split/split][4]),输入形状为[?,?,?,?,3,85],[4],]并使用计算输入张量:输入[1],[2]

这是由于没有相同数量的节点:此处85不能转换或调整为等于80的2*2*1*20 YouC