2016-05-17 4 views
5

私は動的ループを含む新しいモデルを作成するためにTensorFlowを使用しています。私はこのインスタンスを実装するためにtf.while_loopを使用しています。テンソルフローでどの変数が「非型」であるかを検出する方法

gradients = tf.gradients(self.loss, params) 

はその後、私はすべてのparamsを印刷しようとしながら

AttributeError: 'NoneType' object has no attribute 'back_prop'

、この問題が表示され、それがすべてのパラメータは、形状を有する判明:私は遭遇した1つの問題は、ということです。私はnonetypeパラメータがある場合、その形状はNoneであるべきだと思いますか?一方、どの変数が割り当てられていないか、または[]のようなものを検出するのに役立つ方法がありますか?

Traceback (most recent call last): 
    File "main.py", line 125, in <module> 
    tf.app.run() 
    File "/usr/lib/python2.7/site-packages/tensorflow/python/platform/app.py", line 30, in run 
    sys.exit(main(sys.argv)) 
    File "main.py", line 119, in main 
    train()# if FLAGS.train: 
    File "main.py", line 95, in train 
    model = create_model(sess, False) 
    File "main.py", line 75, in create_model 
    forward_only=False) 
    File "/home/sniu/lab/ai_lab/DMN-tensorflow/models/DMN.py", line 248, in __init__ 
    gradients = tf.gradients(self.loss, params) 
    File "/usr/lib/python2.7/site-packages/tensorflow/python/ops/gradients.py", line 481, in gradients 
    in_grads = _AsList(grad_fn(op, *out_grads)) 
    File "/usr/lib/python2.7/site-packages/tensorflow/python/ops/control_flow_grad.py", line 181, in _EnterGrad 
    if not grad_ctxt.back_prop: 
AttributeError: 'NoneType' object has no attribute 'back_prop' 
+0

完全なトレースバックを送信します。 –

答えて

0

NoneTypeだけの価値がNone

>>> item = None 
>>> item.value 
Traceback (most recent call last): 
    File "<stdin>", line 1 in <module> 
AttributeError: 'NoneType' object has no attribute 'value' 

あなたはNone

>>> type(None) 
<type 'NoneType'> 

Nonetypeを呼び出すかどうかを確認することができているようなものであることを意味します。ここでは

はフルトラックバックです特別なPythonの値。それは singletonオブジェクトです。それは NoneTypeのインスタンスであり、すべて Noneは全く同じオブジェクトです。一般

、値がNone最初の場合は、エラーの人々のいずれかのテストこれらのタイプのを防ぐため、または彼らはtry/exceptブロック

if item is not None: 
    print item.back_prop 

それともtry/except

try: 
    item.back_prop 
except AttributeError: 
    pass 

してを使用して式をラップしますtry/exceptブロックがitemとは無関係にAttributeErrorsNoneであることを抑制する可能性があります。itemがsom他の値にはback_prop属性がありません。 itemNoneの場合とは異なる状況を扱うことができます。

+0

ブレンダンにお返事ありがとうございます。私は 'type(variable)'によって提供されたメソッドを使用していますが、私はTensorFlowを使用しているので、このメソッドは '' class 'tensorflow.python.ops.variables.Variable'> 'のみを与えます。私は、TensorFlowグラフを作成する際に私のプログラムに何か問題があると思います。どのテンソルが割り当てられていないのかを知る必要があります。 –

+0

@ HanyuGuoこの問題を解決できましたか?私は同じ問題に直面している! –

+0

@ Mr.Robot通常、グラフの一部を微分できないように計算グラフを分割するためです。私はあなたが計算グラフに含まれているかどうかをcondとbodyで確認することをお勧めします。これが助けてくれることを願って。 –

関連する問題