首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Tensorflow替代crop_and_resize的tpu

Tensorflow替代crop_and_resize的tpu
EN

Stack Overflow用户
提问于 2020-04-01 16:55:12
回答 1查看 344关注 0票数 0

我尝试使用调整尺寸来获取一种将图像放大到特定区域的方法,作为细粒度图像识别的注意机制。

不过,我是在TPU上这样做的,当我试图训练时,我收到一个错误,说操作不可用。

所以我试着想出一种方法来获取一批图像,以及一批相应的边框坐标,并将作物大小调整到原始图像的大小。

我不知道如何对全张量进行操作,所以我尝试了一个循环:

代码语言:javascript
复制
result = tf.Variable([tf.image.resize(images[0][tx[0]:tx[0]+tl[0], ty[0]:ty[0]+tl[0], :], [1200, 1200])])
for i in range(1, tf.shape(images)[0]):
    result = tf.concat([result, [tf.image.resize(images[i][tx[i]:tx[i]+tl[i], ty[i]:ty[i]+tl[i], :], [1200, 1200])]], axis=0)

所以我要说的是:

  1. 使用批处理中第一个图像的调整大小的裁剪来初始化变量(wrt对应的边界框)
  2. 循环处理其余的批处理并连接到我的变量上。

如果我将它作为独立的脚本运行,但在尝试使用模型进行训练或预测时,它就不起作用了:

代码语言:javascript
复制
ValueError: "result" has shape (1, 1200, 1200, 3) before the loop, but shape (2, 1200, 1200, 3) after one iteration. TensorFlow control flow requires it stays the same or be more specific.

有人知道怎么做吗?我可以在不需要循环的情况下做作物操作吗?

我还想知道Tensorflow是否会知道如何在此基础上进行反向传播。

顺便说一下,我使用的是Tensorflow 2

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-01 19:57:46

会为你说清楚的。Tensorflow希望所有循环变量与每次迭代保持一致。因此,不允许出现张量和增长。你必须定义一个更大的张量,并在一个循环中填充它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60976235

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档