2016-09-09 14 views
1

トレーニングデータパイプラインの一部として画像にランダムな90度回転を導入しようとしています。しかし、kのパラメータにtf.image.rot90()をスカラーテンソルで埋めようとすると、次のエラーが発生します。 TypeError: Fetch argument None has invalid type <class 'NoneType'> kがpython変数の場合、この関数は期待通りに機能します。tf.image.rot90()は、パラメータkがテンソルのときに誤差を与えます

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

current implementationtf.image.rot90()にはバグがあります:Pythonの整数ではない値を渡すと、値は返されません。私はこれについてissueを作成し、すぐに修正を得るでしょう。一般的には、kのランダムな整数スカラーを描くことができるはずですが、現在の実装ではそれをサポートするには一般的ではありません。

tf.case()を使って自分で実装することもできますが、これを修正プログラムに実装しようと思いますので、お待ちください:-)。

+0

ありがとうございました。聞いてうれしい私は何かばかげてやっていないよ。私はすでにtf.case()で回避策を実装していますが、バグが修正されたときにコードをクリーンアップする可能性があります。 – RobR

関連する問題