TensorFlow —— tf.summary总结

tf.summary.histogram

# tf.summary.histogram
# 用来显示直方图信息,一般用来显示训练过程中变量的分布情况
tf.summary.histogram(
    name,             # 一个节点的名字
    values,           # 要可视化的数据,可以是任意形状和大小的数据。用于构建直方图的值
    collections=None, # 图表集合键的可选列表。新摘要op将添加到这些集合中。默认为[GraphKeys.SUMMARIES]。
    family=None)

tf.summary.image

# tf.summary.image
# 定义将当前图片信息作为写入日志的操作,输出Summary带有图像的协议缓冲区。
tf.summary.image(
    name,             #生成的节点的名称。也将作为TensorBoard中的系列名称。
    tensor,           #要可视化的图像数据,一个四维的张量,元素类型为uint8或者float32,
                      #维度为[batch_size, height, width, channels],其中channels为1,3或4。
    max_outputs=3,    # 输出的通道数量,要为其生成图像的最大批处理元素数。
    collections=None, # ops.GraphKeys的可选列表。要添加摘要的集合。默认为[_ops.GraphKeys.SUMMARIES]
    family=None)      # family: 可选的; 如果提供,则用作摘要标记名称的前缀,该名称控制用于在Tensorboard上显示的选项卡名称。

tf.summary.scalar

# tf.summary.scalar
# 输出Summary包含单个标量值的协议缓冲区。
# 一般在画loss曲线和accuary曲线时会用到这个函数。
tf.summary.scalar(
    name,               # 生成的节点的名称,例如weight,biases
    tensor,             # 要可视化的数据、张量
    collections=None,
    family=None)
### 如何在 TensorFlow 中实现 GRU 网络 #### 使用 `tf.keras` 实现 GRU 模型 为了简化开发流程并提高可读性和维护性,推荐使用 Keras 接口来创建基于 GRU 的序列模型。下面是一个完整的例子,展示了如何定义、编译以及训练一个简单的 GRU 模型。 ```python import tensorflow as tf from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Embedding, GRU, Dense # 定义超参数 vocab_size = 10000 # 字典大小 embedding_dim = 64 # 嵌入维度 max_length = 20 # 输入序列的最大长度 output_units = 1 # 输出单元数(对于二分类问题) # 构建模型 model = Sequential([ Embedding(input_dim=vocab_size, output_dim=embedding_dim, input_length=max_length), GRU(units=output_units*4), # 设置 GRU 层的隐藏层节点数量 Dense(output_units, activation='sigmoid') # 对于多类别分类任务可以改为 softmax ]) # 编译模型 model.compile(optimizer='adam', loss='binary_crossentropy', # 如果是回归问题则应更改为 mean_squared_error metrics=['accuracy']) print(model.summary()) ``` 这段代码首先导入必要的库文件,并设置了几个重要的超参数用于配置嵌入层和 GRU 层。接着通过调用 `Sequential()` 方法按顺序堆叠各层以形成整个网络架构;最后一步是对该模型进行了编译操作指定了优化器、损失函数及评估指标[^1]。 #### 动态图模式下的自定义循环方式 除了上述静态图的方式外,在 Eager Execution 下也可以采用更加灵活的手动迭代方法来进行前向传播计算: ```python class MyModel(tf.Module): def __init__(self): super(MyModel, self).__init__() self.embedding = tf.keras.layers.Embedding(vocab_size, embedding_dim) self.gru_layer = tf.nn.rnn_cell.GRUCell(num_units=output_units * 4) @tf.function def call(self, x, initial_state=None): embedded_input = self.embedding(x) outputs = [] state = initial_state or self.gru_layer.get_initial_state(batch_size=batch_size, dtype=tf.float32) for t in range(max_length): output, state = self.gru_layer(embedded_input[:,t,:], state) outputs.append(output) final_output = tf.stack(outputs, axis=1)[:, -1, :] # 只取最后一个时间步的结果 logits = tf.keras.layers.Dense(1)(final_output) predictions = tf.sigmoid(logits) return predictions my_model = MyModel() dummy_x = tf.constant([[1]*max_length]) _ = my_model(dummy_x) ``` 这里定义了一个继承自 `tf.Module` 类的新类 `MyModel`, 并在其内部实现了两个主要组件——词嵌入矩阵与单个 GRU cell 。注意这里的 `@tf.function` 装饰器用来将 Python 函数转换成高效的 TensorFlow 图表示形式以便加速执行效率[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值