How to print Keras tensor values?(如何打印凯拉斯张量值?)
本文介绍了如何打印凯拉斯张量值?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想打印LSTM层的状态值。
class CustomCallback(keras.callbacks.Callback):
def on_epoch_end(self, epoch, logs=None):
encoder_outputs, state_h, state_c = self.model.layers[1].output
print(state_h)
print(state_c)
打印的内容如下
32/32 - 0s - loss: 39.6719 - accuracy: 0.2420
KerasTensor(type_spec=TensorSpec(shape=(None, 5), dtype=tf.float32, name=None), name='lstm_5/PartitionedCall:3', description="created by layer 'lstm_5'")
Epoch 5/20000
32/32 - 0s - loss: 39.6549 - accuracy: 0.2420
KerasTensor(type_spec=TensorSpec(shape=(None, 5), dtype=tf.float32, name=None), name='lstm_5/PartitionedCall:3', description="created by layer 'lstm_5'")
如何打印张量的实值?
推荐答案
您必须向Callback
函数内的LSTM
层提供一些数据才能看到一些实际值:
import tensorflow as tf
class CustomCallback(tf.keras.callbacks.Callback):
def __init__(self, data, sample_size):
self.data = data
self.sample_size = sample_size
def on_epoch_end(self, epoch, logs=None):
encoder_outputs, state_h, state_c = lstm_layer(self.data[:self.sample_size])
tf.print('state_h --> ', state_h)
tf.print('state_c --> ', state_c)
inputs = tf.keras.layers.Input((5, 10))
x, _, _ = tf.keras.layers.LSTM(32, return_state=True, return_sequences=True)(inputs)
x = tf.keras.layers.Flatten()(x)
x = tf.keras.layers.Dense(units=1)(x)
model = tf.keras.Model(inputs, x)
model.compile(loss=tf.keras.losses.BinaryCrossentropy())
lstm_layer = model.layers[1]
x_train = tf.random.normal((10, 5, 10))
x_test = tf.random.normal((10, 5, 10))
model.fit(x_train, tf.random.uniform((10, 1), maxval=2), epochs=2, callbacks=[CustomCallback(x_test, 1)], batch_size=2)
Epoch 1/2
5/5 [==============================] - 2s 5ms/step - loss: 12.2492
state_h --> [[-0.157256633 -0.0619691685 0.102620631 ... 0.0852451548 -0.0657120794 -0.201934695]]
state_c --> [[-0.316935241 -0.157902092 0.184583426 ... 0.196862131 -0.134880155 -0.467693359]]
Epoch 2/2
5/5 [==============================] - 0s 4ms/step - loss: 11.8095
state_h --> [[-0.15817374 -0.0611076616 0.103141323 ... 0.0845508352 -0.0648964494 -0.201082334]]
state_c --> [[-0.319411457 -0.156104326 0.186640084 ... 0.194445729 -0.13365829 -0.464410305]]
<keras.callbacks.History at 0x7f9baadc8b90>
注意,我创建了一个x_test
张量,但您也可以将x_train
反馈给您的回调。lstm_layer
根据您的训练进度保存当前权重。您可以通过在Callback
函数tf.print(lstm_layer.get_weights())
中打印层权重来验证这一点。
这篇关于如何打印凯拉斯张量值?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:如何打印凯拉斯张量值?
基础教程推荐
猜你喜欢
- 如何在Python中绘制多元函数? 2022-01-01
- 合并具有多索引的两个数据帧 2022-01-01
- 将 YAML 文件转换为 python dict 2022-01-01
- 哪些 Python 包提供独立的事件系统? 2022-01-01
- 如何在 Python 中检测文件是否为二进制(非文本)文 2022-01-01
- 症状类型错误:无法确定关系的真值 2022-01-01
- 使用Python匹配Stata加权xtil命令的确定方法? 2022-01-01
- 使用 Google App Engine (Python) 将文件上传到 Google Cloud Storage 2022-01-01
- 使 Python 脚本在 Windows 上运行而不指定“.py";延期 2022-01-01
- Python 的 List 是如何实现的? 2022-01-01