私は過去にこの主題を捜したが、実際の解決策を見つけたことはなかった。Tensorflow、tf.equalsをブール値として利用するには?
リスト( "iterateOverMe")を反復処理し、指定された値( "value")と等しいすべての要素を "1"で置き換えるラムダ関数があります。それ以外の値には "9"とマークする必要があります。 「TypeError例外:
idk = tf.map_fn(lambda x: 1 if tf.equal(tf.cast(x, tf.int32), value) else 9, iterateOverMe, dtype=tf.int32)
は、しかし、私は次というエラーメッセージが表示されます。Pythonのbool
が許可されていないtf.Tensor
として使用しテンソルが定義されているかどうかをテストする代わりにif t:
のif t is not None:
を使用し、TensorFlowオプスを使用しますテンソルの値に条件付けされた部分グラフを実行するためのtf.condのようなものです。
しかし、少なくともtf.equalステートメントを直接印刷すると、期待されるTrue/False値が得られます。
私が試したこと。
1:テンソルでreduce_allを使用しても機能しませんでしたが、私はまだ同じエラーが発生しています。
TypeError:tf.Tensor
をPython bool
として使用することはできません。テンソルが定義されているかどうかをテストするには、if t:
の代わりにif t is not None:
を使用し、テンソルの値に条件付けられたサブグラフを実行するには、tf.condのようなTensorFlowオペレーションを使用します。
2: "tがNoneではない場合"を使用してください。何も関係なく、Noneとは一見同じではないため動作しませんでした。
私はこのような1のリストを取得します。これは悲しいことですが間違っています。
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
3:tf.condを使用して同様に試しました。しかし、私は真実を返そうとしているので、まったく動作しません。呼び出し可能なものが必要です。 idk = tf.map_fn(lambda x:tf.cond(tf.equal(tf.int32)、iterator)、True、False)else -1、modifiedTrainingLabels、dtype = tf.int32)
4:これは...この嫌なこともうまくいきませんでした。
idk = tf.map_fn(lambda x: 1 if tf.cond(tf.equal(tf.cast(x, tf.int32), iterator), lambda : True, lambda: False) else 9, modifiedTrainingLabels, dtype=tf.int32)