ValueError:在使用 tf.image.crop_to_bounding_box 时,张量转换为具有 dtype float32 的张量请求 dtype int32

Posted

技术标签:

【中文标题】ValueError:在使用 tf.image.crop_to_bounding_box 时,张量转换为具有 dtype float32 的张量请求 dtype int32【英文标题】:ValueError: Tensor conversion requested dtype int32 for Tensor with dtype float32 while using tf.image.crop_to_bounding_box 【发布时间】:2018-12-19 01:05:24 【问题描述】:

我正在尝试根据边界框裁剪图像。

bbox = ['width': '500', 'ymin': '125', 'depth': '3', 'xmax': '387', 'xmin': '29', 'height': '375', 'ymax': '245']

ymin = float(bbox['ymin'])/float(bbox['height'])
ymax = float(bbox['ymax'])/float(bbox['height'])
xmin = float(bbox['xmin'])/float(bbox['width'])
xmax = float(bbox['xmax'])/float(bbox['width'])

total_height = tf.convert_to_tensor(ymax_int -  ymin_int)
total_width = tf.convert_to_tensor(xmax -  xmin) 
ymin =  tf.convert_to_tensor(ymin)
xmin  = tf.convert_to_tensor(xmin)

img=mpimg.imread(filename)
img = tf.convert_to_tensor(img)
image = tf.image.crop_to_bounding_box(img,  ymin,  xmin,  total_height, total_width)

我收到以下错误:

 ValueError: Tensor conversion requested dtype int32 for Tensor with dtype 
   float32: 'Tensor("Const_7:0", shape=(), dtype=float32)'

   Const_7:0 is ymin

感谢任何有关如何解决此问题的帮助

【问题讨论】:

tf.convert_to_tensor(arg, dtype=tf.float32) 有帮助吗? 【参考方案1】:

TensorFlow使用tf.slice裁剪图像,要求张量total_heighttotal_widthyminxmin的数据类型为int32

total_height = tf.convert_to_tensor(ymax_int -  ymin_int, dtype=tf.int32)
total_width = tf.convert_to_tensor(xmax -  xmin, dtype=tf.int32) 
ymin =  tf.convert_to_tensor(ymin, dtype=tf.int32)
xmin  = tf.convert_to_tensor(xmin, dtype=tf.int32)

【讨论】:

【参考方案2】:

尝试将total_height 变量设置为以下值:

total_height = tf.cast(tf.convert_to_tensor(ymax_int - ymin_int, dtype = tf.float32), dtype = tf.int32)

【讨论】:

以上是关于ValueError:在使用 tf.image.crop_to_bounding_box 时,张量转换为具有 dtype float32 的张量请求 dtype int32的主要内容,如果未能解决你的问题,请参考以下文章

ValueError("无法使用 `eval()` 评估张量:

ValueError:在 defaultdict 上使用 sklearn 时样本数不一致

ValueError: endog 必须在单位区间内

在管道中使用时带有 scikit-learn PLSRegression 的 ValueError

无法使用新观察值更新 StatsModels SARIMAX (ValueError)

在 Django 的详细视图中使用两个参数时,得到“ValueError:int() 的无效文字,基数为 10:'Trancel'”