当参数k是张量时,tf.image.rot90()给出错误

时间:2016-09-09 20:00:10

标签: tensorflow

我正在尝试将随机90度旋转引入图像,作为训练数据管道的一部分。但是,当我尝试使用标量张量填充k tf.image.rot90()参数时,我收到以下错误:  TypeError: Fetch argument None has invalid type <class 'NoneType'>。 当k是python变量时,该函数按预期工作。以下说明了问题:

import tensorflow as tf
import random
import numpy as np
from matplotlib import pyplot as plt

with tf.Session() as sess:

   image = np.reshape(np.arange(0., 4.), [2, 2, 1])
   print(image.shape)

   # this works
   k = random.randint(0, 3)
   print('k = ' + str(k))

   # this gives an error
   # k = random.randint(0, 3)
   # k = tf.convert_to_tensor(k, dtype=tf.int32)
   # k = tf.Print(k, [k], 'k = ')

   # this gives an error
   # k = tf.random_uniform([], minval=0, maxval=4, dtype=tf.int32)
   # k = tf.Print(k, [k], 'k = ')

   image2 = tf.image.rot90(image, k)
   img2 = sess.run(image2)
   plt.figure
   plt.subplot(121)
   plt.imshow(np.squeeze(image), interpolation='nearest')
   plt.subplot(122)
   plt.imshow(np.squeeze(img2), interpolation='nearest')
   plt.show()

有没有办法将k设置为随机值作为培训管道的一部分?或者这是tf.image.rot90()中的错误?

1 个答案:

答案 0 :(得分:2)

k的{​​{3}}有一个错误:如果传递的值不是Python整数,则不会返回任何值。我创建了Out-File help关于此问题,很快就会得到修复。一般来说,你应该能够为Random Forest绘制一个随机整数标量,但目前的实现并不足以支持它。

您可以尝试使用current implementation自行实现它,但我打算在修复中实现它,因此可能更容易等待: - )。