tensorflow tf.equal() broadcasting用法补充

本文详细介绍了TensorFlow中tf.equal()函数的使用方法,不仅展示了如何比较两个Tensor是否相等,还深入探讨了该函数对不同维度的Tensor进行Broadcasting操作的特点,通过实例演示了Broadcasting机制下元素比较的具体过程。
部署运行你感兴趣的模型镜像
tf.equal()

逐元素判断Tensor x,y是否相等,是则为True,否则为False

equal(x, y, name=None)

大部分博客都只是如下一个简单的例子:

import tensorflow as tf

a = [[1,2,3],[4,5,6]]
b = [[1,0,3],[1,5,1]]
with tf.Session() as sess:
    print(sess.run(tf.equal(a,b)))

结果:

[[ True False  True]
 [False  True False]]
实际上tf.equal()输入的x y不一定要维度一致,其支持broadcasting操作

如下例子:

import tensorflow as tf

a = [[0, 0, 3]]
b = [[0], [0], [3]]
with tf.Session() as sess:
    print(sess.run(tf.equal(a, b)))

结果(a的每列会与b的每行的列元素逐一对比):

[[ True  True False]
 [ True  True False]
 [False False  True]]

您可能感兴趣的与本文相关的镜像

TensorFlow-v2.15

TensorFlow-v2.15

TensorFlow

TensorFlow 是由Google Brain 团队开发的开源机器学习框架,广泛应用于深度学习研究和生产环境。 它提供了一个灵活的平台,用于构建和训练各种机器学习模型

### 在 TensorFlow 1.x 中生成 TensorBoard 事件文件的方法 在 TensorFlow 1.x 中,可以通过 `tf.summary.FileWriter` 将计算图和标量数据写入到事件文件中,从而让 TensorBoard 能够读取这些文件并进行可视化[^4]。以下是具体的实现方法: #### 配置日志目录 首先需要定义一个日志目录,用于存储事件文件。例如: ```python log_dir = "logs/" ``` #### 创建 `FileWriter` 使用 `tf.summary.FileWriter` 创建一个写入器,并将计算图传递给它: ```python writer = tf.summary.FileWriter(log_dir, sess.graph) ``` 这一步确保了计算图会被保存到指定的日志目录中[^4]。 #### 写入标量数据 为了记录训练过程中的标量数据(如损失值或准确率),可以使用 `tf.summary.scalar` 定义标量摘要,并将其与合并操作一起写入事件文件。例如: ```python loss_summary = tf.summary.scalar("loss", loss) accuracy_summary = tf.summary.scalar("accuracy", accuracy) merged_summary = tf.summary.merge_all() ``` 在会话中运行时,将合并后的摘要写入事件文件: ```python summary = sess.run(merged_summary, feed_dict={x: batch_x, y: batch_y}) writer.add_summary(summary, global_step=step) ``` 上述代码将标量数据与全局步数关联起来,以便在 TensorBoard 中按步数绘制曲线。 #### 启动 TensorBoard 完成训练后,启动 TensorBoard 并指定日志目录以查看结果: ```bash tensorboard --logdir=logs/ ``` #### 示例代码 以下是一个完整的 TensorFlow 1.x 程序示例,展示如何生成事件文件并使用 TensorBoard 进行可视化: ```python import tensorflow as tf # 定义占位符和变量 x = tf.placeholder(tf.float32, [None, 784], name="input") y = tf.placeholder(tf.float32, [None, 10], name="label") W = tf.Variable(tf.zeros([784, 10]), name="weights") b = tf.Variable(tf.zeros([10]), name="bias") # 定义模型和损失函数 logits = tf.matmul(x, W) + b loss = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits_v2(labels=y, logits=logits)) # 定义优化器 optimizer = tf.train.GradientDescentOptimizer(learning_rate=0.5).minimize(loss) # 定义准确率 correct_prediction = tf.equal(tf.argmax(logits, 1), tf.argmax(y, 1)) accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32)) # 定义标量摘要 loss_summary = tf.summary.scalar("loss", loss) accuracy_summary = tf.summary.scalar("accuracy", accuracy) merged_summary = tf.summary.merge_all() # 初始化变量 init = tf.global_variables_initializer() # 配置日志目录 log_dir = "logs/" # 创建 FileWriter writer = tf.summary.FileWriter(log_dir) with tf.Session() as sess: sess.run(init) writer.add_graph(sess.graph) # 写入计算图 for step in range(100): # 假设 batch_x 和 batch_y 是训练数据 summary, _ = sess.run([merged_summary, optimizer], feed_dict={x: batch_x, y: batch_y}) writer.add_summary(summary, global_step=step) writer.close() ``` ### 注意事项 - 确保日志目录存在并且程序具有写权限。 - 如果需要记录更多类型的摘要(如直方图或图像),可以使用 `tf.summary.histogram` 或 `tf.summary.image`。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值