tf2-yolo3 icon indicating copy to clipboard operation
tf2-yolo3 copied to clipboard

ValueError: Cannot take the length of shape with unknown rank.

Open InkosiZhong opened this issue 4 years ago • 1 comments

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 #裁剪缩放后灰度图

InkosiZhong avatar May 18 '20 11:05 InkosiZhong

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 函数直接指定形状即可。

mcdjt520 avatar Jun 07 '20 09:06 mcdjt520