Я пытаюсь написать собственный слой в 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 Я действительно отправил вопрос о моем следующем препятствии здесь . Я полагаю, что если я смогу преодолеть препятствие, то я буду счастлив, если я останусь такой, какая она есть.