要打印张量的值,您需要张量具有价值
例如:
import tensorflow as tf
aa = tf.constant([1,5,3])
bb = keras.layers.Dense(4, name="my_tensor")
print('aa:',aa)
print('bb:',bb)
aa: tf.Tensor([1 5 3], shape=(3,), dtype=int32)
bb: <tensorflow.python.keras.layers.core.Dense object at 0x000001D4B0137048>
如果我想打印 b 我需要给他一个输入
像这样:
aa = tf.constant([[1,5,3]])
bb = keras.layers.Dense(4, name="my_tensor")
print('bb.weights before a assign:',bb.weights,'\n')
print('bb:',bb(aa),'\n')
print('bb.weights:',bb.weights)
输出:
bb.weight before a assign: []
bb: tf.Tensor([[1.0374807 3.4536252 1.5064619 2.1762671]], shape=(1, 4), dtype=float32)
bb.weight: [<tf.Variable 'my_tensor/kernel:0' shape=(3, 4) dtype=float32, numpy=
array([[ 0.885918 , -0.88332534, -0.40944284, -0.04479438],
[-0.27336687, 0.34549594, -0.11853147, 0.15316617],
[ 0.50613236, 0.8698236 , 0.83618736, 0.4850769 ]],
dtype=float32)>, <tf.Variable 'my_tensor/bias:0' shape=(4,) dtype=float32, numpy=array([0., 0., 0., 0.], dtype=float32)>]
如果 bb 是模型内的张量或输入大小固定的张量,则此操作无效
inputs = keras.Input(shape=(3,), name="inputs")
b = keras.layers.Dense(4, name="my_tensor")(inputs)
a = tf.constant([[1,5,3]])
print('b:',b(a),'\n')
输出:
TypeError: 'tensorflow.python.framework.ops.EagerTensor' object is not callable
我使用 feature_extractor 来修复它:
inputs = keras.Input(shape=(3,), name="inputs")
bb = keras.layers.Dense(4, name="my_tensor")(inputs)
feature_extractor = keras.Model(
inputs=inputs,
outputs=bb,
)
aa = tf.constant([[1,5,3]])
print('feature_extractor:',feature_extractor(aa),'\n')
输出:
feature_extractor: tf.Tensor([[-4.9181094 4.956725 -1.8055304 2.6975303]], shape=(1, 4), dtype=float32)