接下来我将详细讲解“TensorFlow绘制loss/accuracy曲线的实例”的完整攻略,包含两条示例说明。
示例1:绘制loss曲线
在TensorFlow中,绘制loss曲线非常简单,我们只需要定义一个损失函数,然后使用TensorFlow的tf.summary模块记录每个epoch的损失值,最后使用TensorBoard绘制出loss曲线即可。
这里提供一个简单的例子来演示如何绘制loss曲线。
import tensorflow as tf
import numpy as np
# 定义输入数据
x_data = np.random.rand(100).astype(np.float32)
y_data = x_data * 0.1 + 0.3
# 定义模型
Weights = tf.Variable(tf.random_uniform([1], -1.0, 1.0))
biases = tf.Variable(tf.zeros([1]))
y_pred = Weights * x_data + biases
# 定义损失函数,并使用tf.summary记录每个epoch的损失值
loss = tf.reduce_mean(tf.square(y_pred - y_data))
tf.summary.scalar('loss', loss)
# 训练模型
train_op = tf.train.GradientDescentOptimizer(0.5).minimize(loss)
# 启动TensorFlow会话
with tf.Session() as sess:
# 将tf.summary合并后的数据写入日志文件
summary_op = tf.summary.merge_all()
summary_writer = tf.summary.FileWriter('logs', sess.graph)
sess.run(tf.global_variables_initializer())
for step in range(201):
sess.run(train_op)
if step % 20 == 0:
# 记录每个epoch的损失值
summary_str = sess.run(summary_op)
summary_writer.add_summary(summary_str, step)
上述代码中,我们定义了一个简单的线性回归模型,使用梯度下降优化器来训练模型,同时使用tf.summary模块记录每个epoch的损失值,并将记录的数据写入到日志文件中。我们可以通过运行以下命令启动TensorBoard来查看绘制出的loss曲线:
tensorboard --logdir=logs
然后在浏览器中打开http://localhost:6006,即可看到绘制出的loss曲线。
示例2:绘制accuracy曲线
同样地,我们可以利用TensorFlow的tf.summary模块来记录每个epoch的准确率,并使用TensorBoard绘制出准确率曲线。
以下是一个简单的分类模型来演示如何绘制accuracy曲线:
import tensorflow as tf
import numpy as np
# 定义输入数据
x_train = np.random.rand(100, 4)
y_train = np.eye(3)[np.random.randint(0, 3, (100,))]
# 定义模型
inputs = tf.placeholder(tf.float32, shape=[None, 4], name='inputs')
labels = tf.placeholder(tf.float32, shape=[None, 3], name='labels')
W = tf.Variable(tf.zeros([4, 3]), name='weights')
b = tf.Variable(tf.zeros([3]), name='biases')
y_logit = tf.matmul(inputs, W) + b
y_pred = tf.nn.softmax(y_logit)
# 定义损失函数,并使用tf.summary记录每个epoch的损失值和准确率
loss = tf.reduce_mean(-tf.reduce_sum(labels * tf.log(y_pred), reduction_indices=[1]))
accuracy = tf.reduce_mean(tf.cast(tf.equal(tf.argmax(y_pred, 1), tf.argmax(labels, 1)), tf.float32))
tf.summary.scalar('loss', loss)
tf.summary.scalar('accuracy', accuracy)
# 训练模型
train_op = tf.train.GradientDescentOptimizer(0.5).minimize(loss)
# 启动TensorFlow会话
with tf.Session() as sess:
# 将tf.summary合并后的数据写入日志文件
summary_op = tf.summary.merge_all()
summary_writer = tf.summary.FileWriter('logs', sess.graph)
sess.run(tf.global_variables_initializer())
for step in range(201):
sess.run(train_op, feed_dict={inputs: x_train, labels: y_train})
if step % 20 == 0:
# 记录每个epoch的损失值和准确率
summary_str = sess.run(summary_op, feed_dict={inputs: x_train, labels: y_train})
summary_writer.add_summary(summary_str, step)
在上述代码中,我们定义了一个简单的三分类模型,使用交叉熵损失函数来训练模型,并使用tf.summary模块记录每个epoch的损失值和准确率,并将记录的数据写入到日志文件中。我们可以通过运行以下命令启动TensorBoard来查看绘制出的accuracy曲线:
tensorboard --logdir=logs
然后在浏览器中打开http://localhost:6006,即可看到绘制出的accuracy曲线。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:TensorFlow绘制loss/accuracy曲线的实例 - Python技术站