Darkflow: 张量流张量重塑错误

创建于 2017-04-08  ·  3评论  ·  资料来源: thtrieu/darkflow

我正在尝试在我自己的数据集上训练 yolo。 我能够成功地对 10 张图像进行过拟合训练,其中包含 2 个对象。 推理效果很好。

现在我试图在 6000 张图像的完整数据集上进行训练,但出现错误。
我用来训练的 cmd:
./flow --train --dataset /home/ubuntu/datasets/img/ --annotation /home/ubuntu/datasets/anno/ --model cfg/yolo-17c.cfg --load bin/yolo.weights --keep 5 --epoch 30000 --save 1000 --lr 0.00001 --batch 16 --gpu .8

实际错误:

由操作“重塑”引起,定义于:
文件“./flow”,第 44 行,在
tfnet = TFNet(标志)
文件“/home/ubuntu/darkflow/net/build.py”,第 63 行,在 __init__ 中
self.setup_meta_ops()
文件“/home/ubuntu/darkflow/net/build.py”,第 106 行,在 setup_meta_ops
如果 self.FLAGS.train: self.build_train_op()
文件“/home/ubuntu/darkflow/net/help.py”,第 15 行,在 build_train_op
self.framework.loss(self.out)
文件“/home/ubuntu/darkflow/net/yolov2/train.py”,第56行,丢失
net_out_reshape = tf.reshape(net_out, [-1, H, W, B, (4 + 1 + C)])
文件“/home/ubuntu/.conda/envs/py3/lib/python3.5/site-packages/tensorflow/python/ops/gen_array_ops.py”,第2630行,重塑
姓名=姓名)
文件“/home/ubuntu/.conda/envs/py3/lib/python3.5/site-packages/tensorflow/python/framework/op_def_library.py”,第763行,在apply_op
op_def=op_def)
文件“/home/ubuntu/.conda/envs/py3/lib/python3.5/site-packages/tensorflow/python/framework/ops.py”,第2327行,在create_op中
original_op=self._default_original_op, op_def=op_def)
文件“/home/ubuntu/.conda/envs/py3/lib/python3.5/site-packages/tensorflow/python/framework/ops.py”,第 1226 行,在 __init__
self._traceback = _extract_stack()
InvalidArgumentError(回溯见上文):reshape 的输入是一个具有 1149200 个值的张量,但请求的形状需要 18590 的倍数
[[Node: Reshape = Reshape[T=DT_FLOAT, Tshape=DT_INT32, _device="/ job:localhost/replica :0/ task:0/gpu :0"](output, Reshape/shape)]]
[[节点:mul_30/_195 = _Recv[client_terminated=false, recv_device="/ job:localhost/replica :0/ task:0/cpu :0",send_device="/ job:localhost/replica :0/ task:0 /gpu :0", send_device_incarnation=1, tensor_name="edge_188_mul_30", tensor_type=DT_FLOAT, _device="/ job:localhost/replica :0/ task:0/cpu :0"]()]]

我的labels.txt文件有 17 个标签。
我对 yolo-17c.cfg 所做的更改是:
最后一层的filters=125我也用42535尝试了这个
classes=17根据班级数

当我将18590更改为width=224, height=224 ,我意识到18590数字与width=416, height=416相关联,我得到
...but the requested shape requires a multiple of 21560

@ thtrieu 、@Dhruv-Mohan、@ abagshaw你知道我为什么会收到这个错误吗?

感谢您的帮助

最有用的评论

您需要为最后一次转换设置filters=110 。 层。
它需要基于这个公式:
过滤器 = #num * (#classes + 5)

[卷积]
大小=1
步幅=1
垫=1
过滤器=110
激活=线性
[地区]
锚点 = 0.738768,0.874946, 2.42204,2.65704, 4.30971,7.04493, 10.246,4.59428, 12.6868,11.8741

希望有帮助

所有3条评论

您需要为最后一次转换设置filters=110 。 层。
它需要基于这个公式:
过滤器 = #num * (#classes + 5)

[卷积]
大小=1
步幅=1
垫=1
过滤器=110
激活=线性
[地区]
锚点 = 0.738768,0.874946, 2.42204,2.65704, 4.30971,7.04493, 10.246,4.59428, 12.6868,11.8741

希望有帮助

@1NNcoder 请问问题解决了吗? 如果是,您可以关闭它并为其他人腾出空间:)

是的,这有效

此页面是否有帮助?
0 / 5 - 0 等级