📜  TensorFlow-基础(1)

📅  最后修改于: 2023-12-03 15:35:16.960000             🧑  作者: Mango

TensorFlow-基础

TensorFlow是谷歌开发的一款基于数据流的开源机器学习框架。它包含完备支持向量机、全连接神经网络、k-近邻、随机森林等算法,并且提供了可视化的工具——TensorBoard帮助用户更好地理解和调试机器学习模型。

TensorFlow的核心是计算图(computational graph),它描述了一个机器学习模型各个节点(operations)之间的计算关系。构建图形是TensorFlow中最重要的概念之一,因为它让您的计算更高效。

安装

在安装TensorFlow之前,在您的机器上必须先安装以下软件:

  • Python(2.7或3.5+版本)
  • pip(Python包管理工具)

通过pip我们可以很方便地安装TensorFlow,只需在终端中输入以下命令即可:

pip install tensorflow

如果您使用的是GPU版TensorFlow,您还需要安装CUDA和cuDNN库。

入门示例

以下是TensorFlow中最经典的“Hello, World!”示例:

import tensorflow as tf

# 创建一个常量张量
hello = tf.constant('Hello, TensorFlow!')

# 创建一个TensorFlow会话
sess = tf.Session()

# 输出我们创建的张量
print(sess.run(hello))

程序输出:

b'Hello, TensorFlow!'

这个示例展示了一些TensorFlow的基础概念,包括张量(Tensor)、会话(Session)和操作(Operation)。更深入的内容将在接下来的部分中进行介绍。

张量

在TensorFlow中,张量(Tensor)是任意维度的数组。它是计算图中节点之间的基本单位。当您定义一个机器学习模型时,您会定义许多张量。例如,您的输入数据、权重和偏差都是张量。

import tensorflow as tf

# 创建一个标量张量
scalar = tf.constant(1)

# 创建一个向量张量
vector = tf.constant([1, 2, 3, 4, 5])

# 创建一个矩阵张量
matrix = tf.constant([[1, 2], [3, 4]])

# 创建一个三维张量
tensor_3d = tf.constant([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]])

您可以使用tf.rank()函数查看张量的秩:

assert tf.rank(scalar).eval(session=sess) == 0
assert tf.rank(vector).eval(session=sess) == 1
assert tf.rank(matrix).eval(session=sess) == 2
assert tf.rank(tensor_3d).eval(session=sess) == 3
变量

在TensorFlow中,变量(Variable)是可训练的张量,可以在训练过程中被更新。在训练神经网络时,权重和偏差都是变量。

import tensorflow as tf

# 创建一个初始值为零的变量
zero_var = tf.Variable(tf.zeros([2, 3]))

# 创建一个初始值为随机数的变量
rand_var = tf.Variable(tf.random_uniform([2, 3]))

变量在使用之前需要先初始化:

import tensorflow as tf

# 创建一个变量
var = tf.Variable(0, name="my_var")

# 初始化变量
init = tf.global_variables_initializer()
sess.run(init)

初始化变量后,我们可以使用assign()方法为变量赋值:

import tensorflow as tf

# 创建一个变量
var = tf.Variable(0, name="my_var")

# 初始化变量
init = tf.global_variables_initializer()
sess.run(init)

# 为变量赋值
sess.run(var.assign(42))

# 输出变量的值
print(sess.run(var))
占位符

在TensorFlow中,占位符(Placeholder)是在构建图形时可以填充的张量。在训练神经网络时,通常会将训练数据和标签作为占位符。

import tensorflow as tf

# 创建两个占位符
x = tf.placeholder(tf.float32)
y = tf.placeholder(tf.float32)

# 创建一个操作将x、y相加
sum = tf.add(x, y)

# 执行操作并传入占位符的值
print(sess.run(sum, feed_dict={x: 2.0, y: 3.0}))

执行上面的代码将输出5.0。