Tensorflow基础(一)——基本概念和语句使用
(1) 基本概念
- Tensor: TensorFlow中最基本的数据结构是Tensor,它表示任意维度的数组或矩阵。TensorFlow中的所有数据都表示为Tensor。
- Graph: TensorFlow中的计算图(Graph)定义了TensorFlow计算的流程。一个图包含一组节点和边,每个节点表示一个操作,边表示数据的流动。
- Session: TensorFlow中的Session是与图进行交互的运行时环境。Session提供了对TensorFlow计算图的操作和求值的接口。
- Variable: TensorFlow中的Variable是一种特殊的Tensor,用于保存模型的参数。Variable是可训练的,它们的值会在训练过程中不断更新。
- Placeholder: TensorFlow中的Placeholder是一种特殊的Tensor,用于在执行计算图时提供输入数据。Placeholder在计算图中的位置是未知的,它们需要在Session.run()方法中被填充。
- Operation: TensorFlow中的Operation表示计算图中的一个节点,它通常用于执行一些计算操作,例如矩阵乘法、卷积等。
- Session.run(): 用于执行计算图中的操作。可以通过这个方法来计算任意Tensor的值,也可以为Placeholder提供输入数据。
- tf.global_variables_initializer(): TensorFlow中的全局变量初始化操作,用于初始化所有定义的Variable。
(2) 语句使用
- 导入TensorFlow库:
# 导入TensorFlow库
import tensorflow as tf
# 定义常量
a = tf.constant(2)
b = tf.constant(3)
# 定义变量
w = tf.Variable(tf.random_normal([2, 3], stddev=0.1), name='weights')
b = tf.Variable(tf.zeros([3]), name='biases')
# 定义占位符
x = tf.placeholder(tf.float32, [None, 784])
y = tf.placeholder(tf.float32, [None, 10])
# 定义操作
add = tf.add(a, b)
mul = tf.multiply(a, b)
matmul = tf.matmul(x, w)
# 定义损失函数
cross_entropy = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=y_pred, labels=y_true))
# 定义优化器
optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(cross_entropy)
# 初始化全局变量
init = tf.global_variables_initializer()
# 创建Session
with tf.Session() as sess:
# 运行初始化操作
sess.run(init)
# 运行操作
result = sess.run(add)
# 训练模型
for i in range(num_iterations):
sess.run(optimizer, feed_dict={x: x_train, y: y_train})
# 评估模型
accuracy = sess.run(accuracy_op, feed_dict={x: x_test, y: y_test})
# TensorBoard可视化
writer = tf.summary.FileWriter(logdir, graph=tf.get_default_graph())
tf.summary.scalar('loss', loss)
tf.summary.scalar('accuracy', accuracy)
merged_summary_op = tf.summary.merge_all()
summary, _ = sess.run([merged_summary_op, train_op], feed_dict={x: x_batch, y: y_batch})
writer.add_summary(summary, global_step=step)
# 加载和保存模型
saver = tf.train.Saver()
saver.save(sess, save_path)
saver.restore(sess, save_path)
# 使用GPU
with tf.Session(config=tf.ConfigProto(log_device_placement=True)) as sess:
...