TensorFlow基础

TensorFlow进阶

数据类型

数值类型

标量

如果要使用TF提供的功能函数,必须通过TF规定的方式去创建张量,而不能使用PY语言的标准创建方式。

向量

与标量不同,向量的定义必须通过List容器传给tf.constant函数。

矩阵

多维张量

字符串类型

深度学习算法主要是以数值类型张量为主,字符串类型的数据使用频率较低。

布尔类型

数值精度

读取精度

对于某些只能处理指定精度类型的运算操作,需要提前检验输入张量的精度类型,并将不符合要求的张量进行类型转换。

类型转换

待优化张量

由于梯度运算会消耗大量的计算资源,而且会自动更新相关参数,对于不需要优化的张量,如神经网络的输入X,不需要通过tf.Variable封装;

相反,对于需要计算梯度并优化的张量,如神经网络层的W和b,需要通过tf.Variable包裹以便TF跟踪相关梯度信息。

创建张量

从数组、列表对象创建

创建全0或全1张量

创建自定义数值张量

创建已知分布的张量

正态分布和均匀分布是最常见的分布之一,创建采样自这两种分布的张量非常有用。

创建序列

张量的典型应用

标量

标量的一些用途是误差值的表示、各种测量指标的表示,例如准确度Accuracy、精度Precision和召回率Recall。

向量

通过高层接口类Dense()方式创建的网络层,张量W和b存储在类的内部,由类自动创建并管理。

矩阵

三维张量

可以看到x_train张量的shape为[25000,80],其中25000表示句子个数,80表示每个句子共80个单词,每个单词使用数字编码方式表示。

通过layers.Embedding层将数字编码的单词转换为长度是100个单词的向量。

经过Embedding层编码之后,句子张量的shape变为[25000, 80, 100],其中100表示每个单词编码长度是100的向量。

四维向量

神经网络中一般并行计算多个输入以提高计算效率,故b张图片的张量可表示为[b, h, w, 3]。

索引与切片

通过索引与切片操作可以提前张量的部分数据。

索引

当张量的维度数较高时,使用[][][][][]的方式书写不太方便,可以采用[i,j,k]的方式索引,它们是等价的。

切片

切片方式格式总结
切片方式意义
start:end:step从start开始读取到end,不包含end,步长为step
start:end

从start开始读取到end,不包含end,步长为1

start:

从start开始读取完后续所有元素,步长为1

start::step从start开始读取完后续所有元素,步长为step
:end:step从0开始读取到end,不包含end,步长为step
:end

从0开始读取到end,不包含end,步长为1

::step步长为step采样
::读取所有元素
:

读取所有元素

 

···切片方式总结
切片方式意义
a,...,b

a维度对其到最左边,b维度对齐到最右边,中间的维度全部读取,其他维度按a/b的方式读取

a,...a维度对其到最左边,a维度后的所有维度全部读取,a维度按照a方式读取。这种情况等同于a索引/切片方式
...,bb维度对其到最右边下,b之前的所有维度全部读取,b维度按b方式读取
...读取张量所有数据

维度变换

在神经网络运算过程中,维度变换是最核心的操作。

改变视图

在存储数据时,内存并不支持这个维度层级概念,只能以平铺的方式按序写入内存,因此这种层级关系需要人为管理,也就是说,每个张量的存储顺序需要人为跟踪。

为了方便表达,把张量shape列表中相对靠左侧的维度称为大维度,shape列表中相对靠右侧的维度称为小维度。

例如[2,4,4,3]的张量中,图片数量维度与通道数量相比,图片数量称为大维度,通道数量称为小维度。

[b,h,w,c]
b,h*w,c理解为b张图片,h*w个像素点,c个通道
b,h,w*c理解为b张图片,h行,每行的特征长度为w*c
b,h*w*c理解为b张图片,每张图片的特征长度为

改变视图是神经网络中非常常见的操作,可以通过串联多个reshape操作来实现复杂逻辑,但是在通过reshape改变视图时,必须始终记住张量的存储顺序,新视图的维度顺序不能与存储顺序相悖,否则需要通过交换维度操作将存储顺序同步过来。

增加、删除维度

增加维度

tf.expand_dims的axis为正时,表示在当前维度之前插入一个新的维度;为负时,表示在当前维度之后插入一个新的维度。

删除维度

增加维度的逆操作,与增加维度一样,删除维度只能删除长度为1的维度,也不会改变张量的存储。

交换维度

通过tf.transpose完成维度交换后,张量的存储顺序已经改变,视图也随之改变,后续的所有操作必须基于新的存续顺序和视图进行。

复制数据

Broadcasting广播机制

数学运算

加减乘除运算

乘方运算

指数和对数运算

如果希望计算其他底数的对数,可以根据对数的换底公式来计算。

矩阵相乘运算

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Tensorflow是一个开源的机器学习框架,由Google开发。它被广泛应用于深度学习神经网络和其他机器学习算法的开发和部署。 以下是Tensorflow基础训练的步骤: 1. 安装Tensorflow Tensorflow可以通过pip命令安装。在命令行中输入以下命令即可: pip install tensorflow 2. 创建Tensorflow图 在Tensorflow中,图是指一系列的操作。创建图的第一步是创建一个空白的图,然后向其中添加操作。在Tensorflow中,所有的操作都是节点,它们可以接受输入并产生输出。以下是创建一个简单的图的示例: import tensorflow as tf # 创建一个空白的图 graph = tf.Graph() # 向图中添加节点 with graph.as_default(): a = tf.constant(5) b = tf.constant(2) c = tf.add(a, b) 3. 运行Tensorflow图 在Tensorflow中,我们需要创建一个会话来运行图。会话是Tensorflow中用于执行图的对象。我们可以使用会话执行图中的操作,并获取它们的输出。以下是运行上面创建的图的示例: import tensorflow as tf # 创建一个图 graph = tf.Graph() # 向图中添加节点 with graph.as_default(): a = tf.constant(5) b = tf.constant(2) c = tf.add(a, b) # 创建一个会话 with tf.Session(graph=graph) as session: # 运行图中的操作 result = session.run(c) print(result) 输出结果为: 7 4. 使用Tensorflow变量 在Tensorflow中,变量是指可以在图中持久化存储的值。我们可以使用变量来存储模型的参数。以下是创建和使用Tensorflow变量的示例: import tensorflow as tf # 创建一个变量 x = tf.Variable(0, name='counter') # 创建一个操作 increment_op = tf.assign(x, x+1) # 创建一个会话 with tf.Session() as session: # 初始化变量 session.run(tf.global_variables_initializer()) # 运行操作 print(session.run(increment_op)) print(session.run(increment_op)) print(session.run(increment_op)) 输出结果为: 1 2 3 5. 保存和加载Tensorflow模型 在Tensorflow中,我们可以使用Saver对象将模型保存到磁盘上,并在需要时加载它们。以下是保存和加载Tensorflow模型的示例: import tensorflow as tf # 创建一个变量 x = tf.Variable(0, name='counter') # 创建一个操作 increment_op = tf.assign(x, x+1) # 创建一个Saver对象 saver = tf.train.Saver() # 创建一个会话 with tf.Session() as session: # 初始化变量 session.run(tf.global_variables_initializer()) # 运行操作 print(session.run(increment_op)) print(session.run(increment_op)) print(session.run(increment_op)) # 保存模型 saver.save(session, 'my-model') # 加载模型 with tf.Session() as session: # 加载模型 saver.restore(session, 'my-model') # 运行操作 print(session.run(increment_op)) print(session.run(increment_op)) print(session.run(increment_op)) 输出结果为: 1 2 3 4 5 6 以上就是Tensorflow基础训练的步骤。Tensorflow是一个非常强大的机器学习框架,它提供了丰富的工具和函数库,可以帮助我们开发和部署各种机器学习模型。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值