moving average filter python_tensorflow + python(2)

v2-30150c45d8dedc2551757bac5d2d2a98_1440w.jpg?source=172ae18b

1.

tf.greater(a,b)

---输入两个张量,比较两个输入张量中每一个元素的大小,然后返回一个bool类型的tensor,如果两个张量的维度不一致的话,会进行类似Numpy一样的广播操作。

2.

实现的学习率衰减方法:

tf.train.piecewise_constant 分段常数衰减

tf.train.inverse_time_decay 反时限衰减

tf.train.polynomial_decay 多项式衰减

tf.train.exponential_decay 指数衰减

tf.train.natural_exp_decay 自然指数衰减

tf.train.cosine_decay 余弦衰减

tf.train.linear_cosine_decay 线性余弦衰减

tf.train.noisy_linear_cosine_decay 噪声线性余弦衰减

3.

tf.InteractiveSession()

它能让你在运行图的时候,插入一些计算图,这些计算图是由某些操作(operations)构成的。这对于工作在交互式环境中的人们来说非常便利,比如使用IPython。

tf.Session():需要在启动session之前构建整个计算图,然后启动该计算图。意思就是在我们使用tf.InteractiveSession()来构建会话的时候,我们可以先构建一个session然后再定义操作(operation),如果我们使用tf.Session()来构建会话我们需要在会话构建之前定义好全部的操作(operation)然后再构建会话。

4.

tf.name_scope()和tf.variable.scope()

tf.name_scope:

tf.get_variable()创建的变量名不受tf.name_scope的影响,即创建的变量的name没有name_scope定义的前缀。而且,在未指定共享变量时,如果重名会报错。

tf.Variable()和tf.constant()会自动检测有没有变量重名,如果有则会自行处理。

tf.variable:

对于使用tf.Variable来说,tf.name_scope和tf.variable_scope功能一样,都是给变量加前缀,相当于分类管理,模块化。

对于tf.get_variable来说,tf.name_scope对其无效,也就是说tf认为当你使用tf.get_variable时,你只归属于tf.variable_scope来管理共享与否。

with tf.variable_scope('scp', reuse=True) as scp:
a = tf.get_varialbe('a') #报错

with tf.variable_scope('scp', reuse=False) as scp:
a = tf.get_varialbe('a')
a = tf.get_varialbe('a') #报错

都会报错,因为reuse=True是,get_variable会强制共享,如果不存在,报错;reuse=Flase时,会强制创造,如果已经存在,也会报错。

如果想实现“有则共享,无则新建”的方式,可以:

with tf.variable_scope('scp', reuse=tf.AUTO_REUSE) as scp:
a = tf.get_variable('a') #无,创造
a = tf.get_variable('a') #有,共享

5.

tf.nn.conv2d(input, filter, strides, padding, use_cudnn_on_gpu=None, data_format=None, name=None)

input : 输入的要做卷积的图片,要求为一个张量,shape为 [ batch, in_height, in_weight, in_channel ],其中batch为图片的数量,in_height 为图片高度,in_weight 为图片宽度,in_channel 为图片的通道数,灰度图该值为1,彩色图为3。(也可以用其它值,但是具体含义不是很理解)

filter: 卷积核,要求也是一个张量,shape为 [ filter_height, filter_weight, in_channel, out_channels ],其中 filter_height 为卷积核高度,filter_weight 为卷积核宽度,in_channel 是图像通道数 ,和 input 的 in_channel 要保持一致,out_channel 是卷积核数量。

strides: 卷积时在图像每一维的步长,这是一个一维的向量,[ 1, strides, strides, 1],第一位和最后一位固定必须是1

padding: string类型,值为“SAME” 和 “VALID”,表示的是卷积的形式,是否考虑边界。"SAME"是考虑边界,不足的时候用0去填充周围,"VALID"则不考虑

use_cudnn_on_gpu: bool类型,是否使用cudnn加速,默认为true

6.

tf.reset_default_graph()

函数用于清除默认图形堆栈并重置全局默认图形。

注意:默认图形是当前线程的一个属性。该tf.reset_default_graph函数只适用于当前线程。当一个tf.Session或者tf.InteractiveSession激活时调用这个函数会导致未定义的行为。调用此函数后使用任何以前创建的tf.Operation或tf.Tensor对象将导致未定义的行为。

7.

tf.layers.batch_normalization()

简单来说公式如下:

y=γ(x−μ)/σ+βy=γ(x-μ)/σ+β

其中x是输入,y是输出,μ是均值,σ是方差,γ和β是缩放(scale)、偏移(offset)系数。

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

)

注意:训练时,需要更新滑动平均值(moving_mean)和滑动方差(moving_variance)。默认情况下,更新操作放置在tf.GraphKeys.UPDATE_OPS中,因此需要将它们作为对train_ops的依赖项添加。此外,在获取update_ops集合之前,请确保添加任何批处理标准化(batch_normalization)操作。否则,update_ops将为空,训练 / 验证将无法正常工作。

参数:

inputs:张量输入。

axis:一个int,应该被规范化的轴(通常是特征轴)。例如,在使用data_format=“channels_first”的Convolution2D层之后,在BatchNormalization中设置axis=1。

momentum:滑动平均值的动量。

epsilon:小浮点数加上方差以避免被零除。

center:如果为True,则将beta的偏移量添加到标准化张量。如果为False,则忽略beta。

scale:如果为True,则乘以gamma。如果为False,则不使用gamma。当下一层是线性的(例如,nn.relu)时,可以禁用此选项,因为可以由下一层进行缩放。

beta_initializer:beta权重的初始值设定项。

gamma_initializer:gamma权重的初始值设定项。

moving_mean_initializer:滑动平均值的初始化器。

moving_variance_initializer:滑动方差的初始值设定项。

beta_regularizer:可选的beta权重正则化器。

gamma_regularizer:gamma权重的可选调节器。

beta_constraint:由Optimizer更新后应用于beta权重的可选投影函数(例如,用于实现层权重的规范约束或值约束)。函数必须将未投影的变量作为输入,并且必须返回投影的变量(必须具有相同的形状)。在进行异步分布式训练时,使用约束是不安全的。

gamma_constraint:由Optimizer更新后应用于gamma权重的可选投影函数。

training:要么是Python布尔值,要么是TensorFlow布尔值标量张量(例如占位符)。是以训练模式(使用当前批的统计数据进行规范化)还是以推理模式(使用滑动统计数据进行规范化)返回输出。注意:请确保正确设置此参数,否则您的训练 / 验证将无法正常工作。

trainable:布尔值,如果为True,还将变量添加到图形集合GraphKeys.TRAINABLE_VARIABLES(请参见tf.variable)。

name:字符串,层的名称。

reuse:布尔值,是否以相同的名称重用前一层的权重。

`renorm:是否使用批量再规范化(https://arxiv.org/abs/1702.03275)。 这会在训练期间增加额外的变量。这个参数的任何一个值的推断都是相同的。

renorm_clipping:一种字典,可以将关键字“rmax”、“rmin”、“dmax”映射到用于剪裁renorm校正的标量张量。校正(r,d)用作corrected_value = normalized_value * r + d,其中r被剪裁为[rmin,rmax],d被剪裁为[-dmax,dmax]。缺少的rmax、rmin和dmax分别设置为inf、0和inf。

renorm_momentum:用renorm更新滑动方式和标准偏差的动量。与动量不同,这会影响训练,既不应太小(会增加噪音),也不应太大(会给出过时的估计)。注意,momentum仍然被用来得到均值和方差来进行推理。

fused:如果False或者True,尽可能使用更快的融合实现。如果为False,则使用系统建议的实现。

virtual_batch_size:一个int。默认情况下,virtual_batch_size为None,这意味着在整个批次中执行批次规范化。当virtual_batch_size不是None时,改为执行“Ghost Batch Normalization”,创建每个单独规范化的虚拟子批(使用共享gamma、beta和滑动统计)。必须在执行期间划分实际批大小。

adjustment:仅在训练期间,采用包含输入张量(动态)形状的张量并返回一对(scale、bias)以应用于标准化值(γ和β之前)的函数。例如,如果axis=-1,adjustment = lambda shape: ( tf.random_uniform(shape[-1:], 0.93, 1.07),tf.random_uniform(shape[-1:], -0.1, 0.1))将标准化值向上或向下缩放7%,然后将结果向上滑动0.1(每个功能都有独立的缩放和偏移,但在所有示例中都有共享),最后应用gamma 和/或 beta。如果没有,则不应用调整。如果指定了virtual_batch_size,则无法指定。

8.

tf.get_collection(key, scope=None)

该函数可以用来获取key集合中的所有元素,返回一个列表。列表的顺序依变量放入集合中的先后而定。scope为可选参数,表示的是名称空间(名称域),如果指定,就返回名称域中所有放入‘key’的变量的列表,不指定则返回所有变量。

eg: variables = tf.get_collection(tf.GraphKeys.VARIABLES)
for i in variables:
print(i)

9.

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

tensor是待填充的张量

paddings指出要给tensor的哪个维度进行填充,以及填充方式,要注意的是paddings的rank必须和tensor的rank相同

mode指出用什么进行填充,’CONSTANT’表示用0进行填充(总共有三种填充方式,本文用CONSTANT予以说明pad函数功能)

name就是这个节点的名字了

10.

np.expand_dims

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值