TF1は持っていたsess.run()
と.eval()
テンソルの値を取得する-とKerasを持っていましたK.get_value()
。現在、どちらも同じようには機能しません(以前の2つはまったく)。
K.eager(K.get_value)(tensor)
Kerasグラフを終了することで、グラフの内側とグラフのK.get_value(tensor)
外側で機能しているように見えます。どちらもTF2のデフォルトを熱心に使用しています(以前はオフになっています)。ただし、tensor
がKerasバックエンド操作の場合、これは失敗します。
import keras.backend as K
def tensor_info(x):
print(x)
print("Type: %s" % type(x))
try:
x_value = K.get_value(x)
except:
try: x_value = K.eager(K.get_value)(x)
except: x_value = x.numpy()
print("Value: %s" % x_value) # three methods
ones = K.ones(1)
ones_sqrt = K.sqrt(ones)
tensor_info(ones); print()
tensor_info(ones_sqrt)
<tf.Variable 'Variable:0' shape=(1,) dtype=float32, numpy=array([1.], dtype=float32)>
Type: <class 'tensorflow.python.ops.resource_variable_ops.ResourceVariable'>
Value: [1.]
Tensor("Sqrt:0", shape=(1,), dtype=float32)
Type: <class 'tensorflow.python.framework.ops.Tensor'>
# third print fails w/ below
AttributeError: 'Tensor' object has no attribute 'numpy'
tf.keras
ます。バックエンドの中立性を維持しながら、TensorFlow2.0でKeras2.3テンソル値を取得する方法はありますか?
私はあなたが欲しいと思いますK.eval
:
>>> v = K.ones(1)
>>> K.eval(v)
array([1.], dtype=float32)
>>> K.eval(K.sqrt(v))
array([1.], dtype=float32)
これK.get_value
は、任意のテンソルで機能するv
間、変数(ここなど)で使用するために予約されていることに注意してくださいK.eval
。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加