tf2-yolo3
tf2-yolo3 copied to clipboard
ValueError: Cannot take the length of shape with unknown rank.
Readme中表示:To train on your own dataset, just run python train.py --batch_size 32 --dataset train.txt --val_dataset val.txt --epochs 100 --size 320,320 --learning_rate 1e-3
但实际发现仍使用m2nist数据集
查阅源码后,更改m2nist默认值为False,num_channels默认值为3,num_classes默认值为1(只有1类物品需要检测)
进行上述更改后运行报错,ValueError: Cannot take the length of shape with unknown rank.
后修改num_channels默认值为1并使用opencv将3通道数据集转化为灰度数据集仍无法解决
请教是否有其他位置参数需要更改
数据集文件结构如下:
-tf2-yolo3-master
-images
-origin #未裁剪缩放至320*320原图
-train #裁剪缩放后3通道图(使用OpenCV处理,图片应为BGR)
-test #裁剪缩放后3通道图(使用OpenCV处理,图片应为BGR)
-train_gray #裁剪缩放后灰度图
-test_gray #裁剪缩放后灰度图
Readme中表示:To train on your own dataset, just run python train.py --batch_size 32 --dataset train.txt --val_dataset val.txt --epochs 100 --size 320,320 --learning_rate 1e-3
但实际发现仍使用m2nist数据集
查阅源码后,更改m2nist默认值为False,num_channels默认值为3,num_classes默认值为1(只有1类物品需要检测)
进行上述更改后运行报错,ValueError: Cannot take the length of shape with unknown rank.
后修改num_channels默认值为1并使用opencv将3通道数据集转化为灰度数据集仍无法解决
请教是否有其他位置参数需要更改
数据集文件结构如下:
-tf2-yolo3-master
-images
-origin #未裁剪缩放至320*320原图
-train #裁剪缩放后3通道图(使用OpenCV处理,图片应为BGR)
-test #裁剪缩放后3通道图(使用OpenCV处理,图片应为BGR)
-train_gray #裁剪缩放后灰度图
-test_gray #裁剪缩放后灰度图 tf.dataset无法推断shape导致错误 使用tensorflow.keras的时候,tf.dataset在执行model.fit的时候报错:
ValueError: Cannot take the length of shape with unknown rank. 这里大概率是因为tf.dataset中使用了tf.py_function导致无法自动推导出张 良的形状,所以需要自己手动设置形状。
解决方案 这里一定要使用tensorflow 1.x版本,2.0中我也没找到解决方案😓,使用tf.contrib.data.assert_element_shape 函数直接指定形状即可。