Есть ли умный способ переписать это l oop как полную тензорную операцию? - PullRequest
0 голосов
/ 02 апреля 2020

Я пытаюсь написать собственный слой в Tensorflow, и он дает мне всевозможные препятствия для его запуска на TPU. Вот часть, вызывающая проблемы:

self.outputs = tf.zeros_like(images)
batch_size = tf.shape(images)[0]
for i in tf.range(batch_size):
    resized = tf.image.resize(images[i][tx[i]:tx[i]+tl[i], ty[i]:ty[i]+tl[i], :], tf.shape(images)[1:3])
    padding = tf.zeros([batch_size - 1 - i, tf.shape(images)[1], tf.shape(images)[2], tf.shape(images)[3]])
    self.outputs = tf.concat([self.outputs[:i], [resized], padding], axis=0)

tx, ty, tl являются параметрами сортировочного поля, и я пытаюсь сделать crop_and_resize , но к сожалению, это пока не поддерживается для ТПУ. Сейчас я сталкиваюсь с другим препятствием, но вместо того, чтобы спросить об этом, я думаю, что я просто хочу закрыть это, записав это как полную тензорную операцию, а не итерацию по l oop.

Обратите внимание, что padding совершенно не важен для моей цели. Это происходит потому, что графический компилятор не был рад, что self.outputs сменил форму за l oop итераций.

У кого-нибудь есть хитрость, чтобы решить эту проблему?

EDIT Я действительно отправил вопрос о моем следующем препятствии здесь . Я полагаю, что если я смогу преодолеть препятствие, то я буду счастлив, если я останусь такой, какая она есть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...