IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 代码学习笔记(一) -> 正文阅读

[人工智能]代码学习笔记(一)

代码学习笔记(一)

卷积模块

tf.keras.layers.Conv2D

用于描述卷积层,卷积层的作用是提取一个局部区域的特征,不同的卷积核相当于不同的特征提取器。

outputs = tf.keras.layers.Conv2D(filters=filters,
                                         kernel_size=(1, 3),
                                         strides=(1, 1),
                                         padding="same",
                                         activation=None)(inputs)
参数描述
filters卷积过滤器的数量,对应输出的维数–卷积核的数目(即输出的维度)
kernel_size过滤器的大小,单个整数或由两个整数构成的list/tuple,表示卷积核的宽度和长度。如果为单个整数,则表示在各个空间维度的相同长度。
strides横向和纵向的步长,单个整数或由两个整数构成的list/tuple,为卷积的步长。如果为一个整数则横向和纵向相同步长。任何不为1的strides均与任何不为1的dilation_rata均不兼容
padding补0策略,为"valid",“same”。“valid”代表只进行有效的卷积,即对边界数据不处理。“same”代表保留边界处的卷积结果,通常会导致输出shape与输入shape相同。
activation激活函数,如果不指定该参数,将不会使用任何激活函数(即使用线性激活函数:a(x)=x)
inputs把上一层的输出作为输入(直接将上一层作为参数输入即可)

tf.keras.layers.LeakyReLU

激活函数:在人工神经网络的神经元上运行的函数,负责将神经元的输入映射到输出端。
引入激活函数是为了增加神经网络模型的非线性
如果不用激活函数,每一层输出都是上层输入的线性函数,无论神经网络有多少层,输出都是输入的线性组合,这种情况就是最原始的感知机(Perceptron)。
如果使用的话,激活函数给神经元引入了非线性因素,使得神经网络可以任意逼近任何非线性函数,这样神经网络就可以应用到众多的非线性模型中。

outputs = tf.keras.layers.LeakyReLU()(outputs)

一些复杂的激活函数如:Leaky ReLU、PReLU是不可以这样直接使用的,必须使用add方法将高级激活函数作为层(layer)来使用.
这里我们在卷积层中去掉激活函数的参数,并在卷积层后加入高级激活层

注意力机制

作为一种资源分配方案,将有限的计算资源用来处理更重要的信息,是解决信息超载的重要手段。

inputs.shape.as_list()

用于tensor来返回shape,但是是一个元组,需要通过as_list()的操作转换成list.

tf.keras.layers.AveragePooling2D

平均池化(average pooling):计算图像区域的平均值作为该区域池化后的值。

参数描述
pool_size2个整数的整数或元组/列表:(pool_height,pool_width),用于指定池窗口的大小;可以是单个整数,以指定所有空间维度的相同值.
strides2个整数的整数或元组/列表,指定池操作的步幅.可以是单个整数,以指定所有空间维度的相同值.
padding一个字符串,填充方法:“'valid”或“same”,不区分大小写.

属性:input
检索图层的输入张量.

只适用于图层只有一个输入,即如果它连接到一个输入层.

返回:

输入张量或输入张量列表.

可能引发的异常:

AttributeError:如果图层连接到多个输入图层.
RuntimeError:如果在Eager模式下调用.
AttributeError:如果找不到入站节点.

tf.transpose

 outputs = tf.transpose(outputs, [0, 1, 3, 2])

置换 outputs,根据 [0,1,3,2] 重新排列尺寸.

tf.keras.layers.Multiply

该层接收一个列表的同shape张量,并返回它们的逐元素积的张量,shape不变。

特征提取层

tf.keras.layers.MaxPooling2D

最大池化(max pooling):选图像区域的最大值作为该区域池化后的值。
池化层:池化层是模仿人的视觉系统对数据进行降维,用更高层次的特征表示图像。 实施池化的目的: (1) 降低信息冗余; (2) 提升模型的尺度不变性、旋转不变性; (3) 防止过拟合。
无论max pooling还是mean pooling,都没有需要学习的参数。因此,在卷积神经网络的训练中,Pooling层需要做的仅仅是将误差项传递到上一层,而没有梯度的计算。

特征提取

tf.keras.layers.Flatten

用于将输入层的数据压成一维的数据,一般用在卷积层和全连接层之间(因为全连接层只能接收一维数据,而卷积层可以处理二维数据,就是全连接层处理的是向量,而卷积层处理的是矩阵)

对信号做快速傅里叶变换

FFT的基本思想是把原始的N点序列,依次分解成一系列的短序列。充分利用DFT计算式中指数因子 所具有的对称性质和周期性质,进而求出这些短序列相应的DFT并进行适当组合,达到删除重复计算,减少乘法运算和简化结构的目的。

tf.reshape

函数的作用是将tensor变换为参数shape形式,其中的shape为一个列表形式,特殊的是列表可以实现逆序的遍历,即list(-1).-1所代表的含义是我们不用亲自去指定这一维的大小,函数会自动进行计算,但是列表中只能存在一个-1。(如果存在多个-1,就是一个存在多解的方程)

tf.pad

 tf.pad( tensor,paddings, mode='CONSTANT',name=None)

填充函数
tensor是要填充的张量
padings ,代表每一维填充多少行/列,它的维度一定要和tensor的维度是一样的,这里的维度不是传统上数学维度,如[[2,3,4],[4,5,6]]是一个3乘4的矩阵,但它依然是二维的,所以pad只能是[[1,2],[1,2]]这种。

tf.abs

计算张量的绝对值.

tf.signal.fft

tf.signal.rfft(
    input_tensor, fft_length=None, name=None
)

tf.cast

tf.cast()函数的作用是执行 tensorflow 中张量数据类型转换,比如读入的图片如果是int8类型的,一般在要在训练前把图像的数据格式转换为float32。

cast(x, dtype, name=None)

全连接层

全连接层在整个网络卷积神经网络中起到“特征提取器”的作用。如果说卷积层、池化层和激活函数等操作是将原始数据映射到隐层特征空间的话,全连接层则起到将学到的特征表示映射到样本的标记空间的作用

tf.keras.layers.Dense

tf.keras.layers.Dense( units, # 正整数,输出空间的维数
 activation=None, # 激活函数,不指定则没有)

tf.keras.layers.Dropout

tf.keras.layers.Dropout(rate)

作用:将Dropout应用于输入
Dropout层在训练期间的每一步中将输入单位随机设置为0,频率为速率,这有助于防止过拟合。
未设置为0的输入将按1 /(1-rate)放大,以使所有输入的总和不变。
请注意,仅当训练设置为True时才应用Dropout层,以便在推理过程中不会丢弃任何值。
使用model.fit时,训练将自动适当地设置为True,在其他情况下,可以在调用图层时将kwarg显式设置为True。
(这与为Dropout图层设置trainable = False形成对比。trainable不会影响该图层的行为,
因为Dropout没有任何可以在训练期间冻结的变量/权重。)

网络结构

tf.keras.layers.Concatenate

作用是:它接受一个张量列表作为输入,除了连接轴外,所有的张量形状都相同,返回一个张量,它是所有输入的连接。

损失函数

tf.keras.losses.CategoricalCrossentropy

计算标签和预测之间的交叉熵损失。

度量函数

tf.keras.metrics.CategoricalAccuracy

用于度量测试集的准确率。
(无论是训练还是评估,loss是都会保存在history中的,也即可以当做loss是默认的评估指标;但是我们还可以指定另外的评估指标,一般情况下都是使用训练和测试精度accuracy这个指标,也即在history中保留住每个epoch的训练精度;当然也可以使用交叉熵crossentropy这个指标,每个epoch都计算一下此次循环里的output和label的平均交叉熵。)

训练过程

tf.GradientTape

tf.GradientTape () 是一个自动求导的记录器。 只要进入了 with tf.GradientTape () as tape 的上下文环境,则在该环境中计算步骤都会被自动记录。

model.trainable_variables

查看管理变量的函数

tape.gradient

GradientTape是eager模式下计算梯度用的,而eager模式(eager模式的具体介绍请参考文末链接)是TensorFlow 2.0的默认模式。 通过GradientTape可以对损失的计算过程、计算方式进行深度定制,即所谓的Custom training, 而不仅仅是通过model.train这样过于高级(傻白甜)的API的方式进行训练。这在很多场合下是非常有用的。

apply_gradients

该函数的作用是将compute_gradients()返回的值作为输入参数对variable进行更新。

tf.keras.optimizers.Adam

其大概的思想是开始的学习率设置为一个较大的值,然后根据次数的增多,动态的减小学习率,以实现效率和效果的兼得。

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-12-08 13:48:54  更:2021-12-08 13:51:07 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 1:29:35-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码