1、tf.layers.dense()
dense :全连接层 相当于添加一个层
https://blog.csdn.net/yangfengling1023/article/details/81774580/
2、tf.nn.relu()
https://blog.csdn.net/tiaojingtao1293/article/details/81433066
线性整流函数(Rectified Linear Unit, ReLU),又称修正线性单元。其定义如下图,在横坐标的右侧,ReLU函数为线性函数。在横坐标的右侧,ReLU函数为值为0。
tf.nn.relu()函数的目的是,将输入小于0的值幅值为0,输入大于0的值不变。
3、tf.truncated_normal()
tf.truncated_normal(shape, mean=0.0, stddev=1.0, dtype=tf.float32, seed=None, name=None)
http://www.zzvips.com/article/133363.html
从截断的正态分布中输出随机值。生成的值服从具有指定平均值和标准偏差的正态分布,如果生成的值大于平均值2个标准偏差的值则丢弃重新选择。
shape: 一维的张量,也是输出的张量。
mean: 正态分布的均值。
stddev: 正态分布的标准差。
dtype: 输出的类型。
seed: 一个整数,当设置之后,每次生成的随机数都一样。
name: 操作的名字。
4 、tf.contrib.layers.batch_norm()
可以用来构建待训练的神经网络模型
https://blog.csdn.net/qq_30638831/article/details/82877109
5、tf.slice()
https://blog.csdn.net/nini_coded/article/details/79852031
tf.slice(inputs, begin, size, name)
作用:从列表、数组、张量等对象中抽取一部分数据
begin和size是两个多维列表,他们共同决定了要抽取的数据的开始和结束位置
begin表示从inputs的哪几个维度上的哪个元素开始抽取
size表示在inputs的各个维度上抽取的元素个数
若begin[]或size[]中出现-1,表示抽取对应维度上的所有元素
6、tf.argmax()
https://blog.csdn.net/u012300744/article/details/81240580
tf.argmax(input,axis)根据axis取值的不同返回每行或者每列最大值的索引。
axis=0时比较每一列的元素,将每一列最大元素所在的索引记录下来,最后输出每一列最大元素所在的索引数组
axis=1的时候,将每一行最大元素所在的索引记录下来,最后返回每一行最大元素所在的索引数组。
7、tf.equal()
https://blog.csdn.net/m0_37546065/article/details/89969954
equal(x, y, name=None)
equal,相等的意思。顾名思义,该函数用来判断相等
tf.equal(A, B)是对比这两个矩阵或者向量的相等的元素,如果是相等的那就返回True,反正返回False,返回的值的矩阵维度和A是一样的
由于是逐元素的对比,所以x和y的维度也要相同
其中:
x,y:要比较的两个张量
name:操作名称,默认null
8、tf.cast()
https://blog.csdn.net/dcrmg/article/details/79747814
tf.cast()函数的作用是执行 tensorflow 中张量数据类型转换,比如读入的图片如果是int8类型的,一般在要在训练前把图像的数据格式转换为float32。
cast(x, dtype, name=None)
- 第一个参数 x: 待转换的数据(张量)
- 第二个参数 dtype: 目标数据类型
- 第三个参数 name: 可选参数,定义操作的名称
9、tf.reduce_mean()
https://blog.csdn.net/dcrmg/article/details/79797826
tf.reduce_mean 函数用于计算张量tensor沿着指定的数轴(tensor的某一维度)上的的平均值,主要用作降维或者计算tensor(图像)的平均值。
reduce_mean(input_tensor,
axis=None,
keep_dims=False,
name=None,
reduction_indices=None)
第一个参数input_tensor: 输入的待降维的tensor;
第二个参数axis: 指定的轴,如果不指定,则计算所有元素的均值;
第三个参数keep_dims:是否降维度,设置为True,输出的结果保持输入tensor的形状,设置为False,输出结果会降低维度;
第四个参数name: 操作的名称;
第五个参数 reduction_indices:在以前版本中用来指定轴,已弃用;
10、tf.placeholder()
https://blog.csdn.net/kdongyi/article/details/82343712
placeholder()函数是在神经网络构建graph的时候在模型中的占位,此时并没有把要输入的数据传入模型,它只会分配必要的内存。等建立session,在会话中,运行模型的时候通过feed_dict()函数向占位符喂入数据。
tf.placeholder(
dtype,
shape=None,
name=None
)
参数:
- dtype:数据类型。常用的是tf.float32,tf.float64等数值类型
- shape:数据形状。默认是None,就是一维值,也可以是多维(比如[2,3], [None, 3]表示列是3,行不定)
- name:名称
11、tf.nn.softmax_cross_entropy_with_logits_v2()
https://zhuanlan.zhihu.com/p/95627047
tf.nn.softmax_cross_entropy_with_logits函数是TensorFlow中常用的求交叉熵的函数
反向传播时,logits和labels都会反向传播
tf.nn.softmax_cross_entropy_with_logits_v2(
_sentinel=None,
labels=None,
logits=None,
dim=-1,
name=None
)
- _sentinel:一个内部参数,具体作用还未可知
- labels:真实标签,注意是一个onehot向量,且长度跟logits一样长,长度为类别数
- logits:模型最后一层的输出,注意不要过softmax函数,维度为[batch_size,numclass]
- dim: 按照哪一个维度去求的,默认-1也就是最后一维,也就是按照类别数来求的,如果你的类别数在第一维的话,这里必须要改成0
算出的结果表示真实标签和预测标签之间的差距,使用的是softmax交叉熵来进行计算的。(计算原理后续会说明)
12、tf.train.AdamOptimizer(1e-4).minimize()
https://blog.csdn.net/qq_39852676/article/details/98477214
tf.train.AdamOptimizer()函数是Adam优化算法:是一个寻找全局最优点的优化算法,引入了二次方梯度校正。
tf.train.AdamOptimizer.__init__(
learning_rate=0.001,
beta1=0.9,
beta2=0.999,
epsilon=1e-08,
use_locking=False,
name='Adam'
)
参数:
learning_rate:张量或浮点值。学习速率
beta1:一个浮点值或一个常量浮点张量。一阶矩估计的指数衰减率
beta2:一个浮点值或一个常量浮点张量。二阶矩估计的指数衰减率
epsilon:数值稳定性的一个小常数
use_locking:如果True,要使用lock进行更新操作
name:应用梯度时为了创建操作的可选名称。默认为“Adam”
本质上是带有动量项的RMSprop,它利用梯度的一阶矩估计和二阶矩估计动态调整每个参数的学习率。Adam的优点主要在于经过偏置校正后,每一次迭代学习率都有个确定范围,使得参数比较平稳。
13、tf.Session()
tf.Session()创建一个会话,当上下文管理器退出时会话关闭和资源释放自动完成
https://cloud.tencent.com/developer/article/1454137
14、sess.run()
run(fetches, feed_dict=None, options=None, run_metadata=None)
当构建完图后,需要在一个session会话中启动图,第一步是创建一个Session对象。
为了取回(Fetch)操作的输出内容, 可以在使用 Session 对象的 run()调用执行图时,传入一些 tensor, 这些 tensor 会帮助你取回结果。
sess.run(tf.global_variables_initializer()) 初始化模型的参数
https://blog.csdn.net/u012436149/article/details/78291545