tenesorflower学习笔记

最近在学习YOLO
其中会接触到TF中的函数
所以在此处做记录

tf.pad()函数主要是对张量在各个维度上进行填充,该函数的参数如下所示:

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

tensor是待填充的张量
paddings指出要给tensor的哪个维度进行填充,以及填充方式,要注意的是paddings的rank必须和tensor的rank相同
mode指出用什么进行填充,’CONSTANT’表示用0进行填充(总共有三种填充方式,本文用CONSTANT予以说明pad函数功能)
name就是这个节点的名字了

tf.layers这个模块主要覆盖的区域是全连接和卷积等等的基本操作

Input(…): 用于实例化一个输入 Tensor,作为神经网络的输入。
average_pooling1d(…): 一维平均池化层
average_pooling2d(…): 二维平均池化层
average_pooling3d(…): 三维平均池化层
batch_normalization(…): 批量标准化层
conv1d(…): 一维卷积层
conv2d(…): 二维卷积层
conv2d_transpose(…): 二维反卷积层
conv3d(…): 三维卷积层
conv3d_transpose(…): 三维反卷积层
dense(…): 全连接层
dropout(…): Dropout层
flatten(…): Flatten层,即把一个 Tensor 展平
max_pooling1d(…): 一维最大池化层
max_pooling2d(…): 二维最大池化层
max_pooling3d(…): 三维最大池化层
separable_conv2d(…): 二维深度可分离卷积层

tf.layers.batch_normalization此方法是批量标准化的方法,经过处理之后可以加速训练速度

tf.layers.batch_normalization(
    inputs,
    axis=-1,
    momentum=0.99,
    epsilon=0.001,
    center=True,
    scale=True,
    beta_initializer=tf.zeros_initializer(),
    gamma_initializer=tf.ones_initializer(),
    moving_mean_initializer=tf.zeros_initializer(),
    moving_variance_initializer=tf.ones_initializer(),
    beta_regularizer=None,
    gamma_regularizer=None,
    beta_constraint=None,
    gamma_constraint=None,
    training=False,
    trainable=True,
    name=None,
    reuse=None,
    renorm=False,
    renorm_clipping=None,
    renorm_momentum=0.99,
    fused=None,
    virtual_batch_size=None,
    adjustment=None
)

inputs必需,即输入数据。
axis: 一个整形或者一个整形列表。表示将要使用BN的轴。举个例子, 要是在一个数据格式为"channels_first" 2D卷积层的后面,那么设置set axis=1,否则设置axis=3. 要是提供了一个列表,那么列表中所有的维度都会被同时被BN。
Note: when using multi-axis batch norm, the beta, gamma, moving_mean, and moving_variance variables are the same rank as the input Tensor, with dimension size 1 in all reduced (non-axis) dimensions).
momentum: 滑动平均的Momentum.
epsilon: 可选,默认 0.001,大于0的小浮点数,用于防止除0错误。
center: 可选,默认 True,若设为True,将会将 beta 作为偏置加上去,否则忽略参数 beta
scale: 可选,默认 True,若设为True,则会乘以gamma,否则不使用gamma。当下一层是线性的时,可以设False,因为scaling的操作将被下一层执行。
beta_initializer: 可选,默认 zeros_initializer,即 beta 权重的初始方法。
gamma_initializer: 可选,默认 ones_initializer,即 gamma 的初始化方法。
moving_mean_initializer: 可选,默认 zeros_initializer,即动态均值的初始化方法。
moving_variance_initializer: 可选,默认 ones_initializer,即动态方差的初始化方法。
beta_regularizer: 可选,默认None,beta 的正则化方法。
gamma_regularizer: 可选,默认None,gamma 的正则化方法。
**beta_constraint:**可选,默认None,加在 beta 上的约束项。
gamma_constraint: 可选,默认None,加在 gamma 上的约束项。
renorm: 可选,默认 False,是否要用 Batch Renormalization (https://arxiv.org/abs/1702.03275).
renorm_clipping: 可选,默认 None,是否要用 rmax、rmin、dmax 来 scalar Tensor。
renorm_momentum: 可选,默认 0.99,用来更新动态均值和标准差的 Momentum 值。
fused:可选,默认 None,是否使用一个更快的、融合的实现方法。
trainable: 可选,默认 False,返回结果是 training 模式。
virtual_batch_size:可选,默认 None,是一个 int 数字,指定一个虚拟 batch size。
adjustment: 可选,默认 None,对标准化后的结果进行适当调整的方法。
name: A string, the name of the layer.

tf.layers.conv2d2D 卷积层的函数接口。
这个层创建了一个卷积核,将输入进行卷积来输出一个 tensor。如果 use_bias 是 True(且提供了 bias_initializer),则一个偏差向量会被加到输出中。最后,如果 activation 不是 None,激活函数也会被应用到输出中。

conv2d(inputs, filters, kernel_size, 
	strides=(1, 1), 
	padding='valid', 
	data_format='channels_last', 
	dilation_rate=(1, 1),
	activation=None, 
	use_bias=True, 
	kernel_initializer=None,
	bias_initializer=<tensorflow.python.ops.init_ops.Zeros object at 0x000002596A1FD898>, 
	kernel_regularizer=None,
	bias_regularizer=None, 
	activity_regularizer=None, 
	kernel_constraint=None, 
	bias_constraint=None, 
	trainable=True, 
	name=None,
	reuse=None)

inputs:Tensor 输入

filters:整数,表示输出空间的维数(即卷积过滤器的数量)

kernel_size:一个整数,或者包含了两个整数的元组/队列,表示卷积窗的高和宽。如果是一个整数,则宽高相等。

strides:一个整数,或者包含了两个整数的元组/队列,表示卷积的纵向和横向的步长。如果是一个整数,则横纵步长相等。另外, strides 不等于1 和 dilation_rate 不等于1 这两种情况不能同时存在。

padding:“valid” 或者 “same”(不区分大小写)。“valid” 表示不够卷积核大小的块就丢弃,"same"表示不够卷积核大小的块就补0。
“valid” 的输出形状为

L n e w s = c e i l ( L − F + 1 S ) L_{news} = ceil(\frac{L-F+1}{S}) Lnews=ceil(SLF+1)

“same” 的输出形状为
L n e w s = c e i l ( L S ) L_{news} = ceil(\frac{L}{S}) Lnews=ceil(SL)

其中,LLL 为输入的 size(高或宽),FFF 为 filter 的 size,SSS 为 strides 的大小,ceil()ceil()ceil() 为向上取整。

data_formatchannels_last或者 channels_first,表示输入维度的排序。

`channels_last` corresponds to inputs with shape;
`(batch, height, width, channels)` while `channels_first` corresponds to inputs with shape `(batch, channels, height, width)`.

dilation_rate:一个整数,或者包含了两个整数的元组/队列,表示使用扩张卷积时的扩张率。如果是一个整数,则所有方向的扩张率相等。另外, strides 不等于1 和 dilation_rate 不等于1 这两种情况不能同时存在。

activation:激活函数。如果是None则为线性函数。

use_bias:Boolean类型,表示是否使用偏差向量。

kernel_initializer:卷积核的初始化。

bias_initializer:偏差向量的初始化。如果是None,则使用默认的初始值。

kernel_regularizer:卷积核的正则项

bias_regularizer:偏差向量的正则项

activity_regularizer:输出的正则函数

kernel_constraint:映射函数,当核被Optimizer更新后应用到核上。Optimizer 用来实现对权重矩阵的范数约束或者值约束。映射函数必须将未被影射的变量作为输入,且一定输出映射后的变量(有相同的大小)。做异步的分布式训练时,使用约束可能是不安全的。

bias_constraint:映射函数,当偏差向量被Optimizer更新后应用到偏差向量上。

trainable:Boolean类型。

name:字符串,层的名字。

reuse:Boolean类型,表示是否可以重复使用具有相同名字的前一层的权重。
##返回值
输出 Tensor
##异常抛出
ValueError:if eager execution is enabled.

参考:
[1]https://blog.csdn.net/xierhacker/article/details/82747919

[2]https://blog.csdn.net/HappyRocking/article/details/80243790?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值