TensorFlow 神经网络相关函数
TensorFlow 激活函数
激活操作提供用于神经网络的不同类型的非线性。这些包括平滑的非线性(sigmoid,tanh,elu,softplus,和softsign),连续的,但不是到处可微函数(relu,relu6,crelu和relu_x),和随机正规化(dropout)。
所有激活操作应用于分量,并产生与输入张量相同形状的张量。
- tf.nn.relu
- tf.nn.relu6
- tf.nn.crelu
- tf.nn.elu
- tf.nn.softplus
- tf.nn.softsign
- tf.nn.dropout
- tf.nn.bias_add
- tf.sigmoid
- tf.tanh
TensorFlow 卷积运算
卷积运算在一批图像上扫描2维滤镜,将滤镜应用到适当大小的每个图像的每个窗口。不同的操作在通用和特定过滤器之间取舍:
- conv2d:可以将通道混合在一起的任意滤波器
- depthwise_conv2d:独立对每个通道进行操作的过滤器
- separable_conv2d:深度方向的空间滤波器,后跟一个点滤波器
注意,尽管这些操作被称为“卷积”,但它们严格地说是“互相关”,因为滤波器与输入窗口组合而不反转滤波器。
过滤器应用于与过滤器相同大小的图像补丁,并根据 strides 参数进行分段。strides = [1, 1, 1, 1] 在每个偏移处将滤镜应用到贴片,strides = [1, 2, 2, 1] 将滤镜应用到每个维度中的每个其他图像补丁等。
忽略通道,假设4维 input 具有shape [batch, in_height, in_width, ...],4维 filter具有shape [filter_height, filter_width, ...],则卷积运算的空间语义如下:首先,根据选择的填充方案 'SAME' 或 'VALID' 输出大小和计算填充像素。对于 'SAME' 填充,输出高度和宽度计算如下:
out_height = ceil(float(in_height) / float(strides[1]))
out_width = ceil(float(in_width) / float(strides[2]))
沿高度和宽度应用的总填充量计算如下:
if (in_height % strides[1] == 0):
pad_along_height = max(filter_height - strides[1], 0)
else:
pad_along_height = max(filter_height - (in_height % strides[1]), 0)
if (in_width % strides[2] == 0):
pad_along_width = max(filter_width - strides[2], 0)
else:
pad_along_width = max(filter_width - (in_width % strides[2]), 0)
最后,顶部,底部,左侧和右侧的填充是:
pad_top = pad_along_height // 2
pad_bottom = pad_along_height - pad_top
pad_left = pad_along_width // 2
pad_right = pad_along_width - pad_left
请注意,除以2意味着可能会出现两侧的填充(顶部与底部,右侧和左侧)关闭的情况.在这种情况下,底部和右侧总是得到一个额外的填充像素。例如,当 pad_along_height 为 5 时,我们在顶部填充2个像素,在底部填充3个像素。请注意,这不同于现有的库,如 cuDNN 和 Caffe,它们明确指定了填充像素的数量,并且始终在两侧都填充相同数量的像素。
对于'VALID“填充”,输出高度和宽度计算如下:
out_height = ceil(float(in_height - filter_height + 1) / float(strides[1]))
out_width = ceil(float(in_width - filter_width + 1) / float(strides[2]))
并且没有使用填充。
给定输出大小和填充,输出可以计算为:
$ output[b, i, j, :] = sum_{d_i, d_j} input[b, strides[1] * i + d_i - pad_{top},\ strides[2] * j + d_j - pad_{left}, ...] * filter[d_i, d_j,\ ...]$
其中在原始输入图像区域之外的任何值被认为是零(即,我们在图像的边界周围填充零值)。
因为 input 是4维的,所以每个 input[b, i, j, :]都是一个向量。因为 conv2d,这些向量被 filter[di, dj, :, :] 矩阵乘以产生新的向量。因为 depthwise_conv_2d,每个标量分量 input[b, i, j, k]乘以一个向量 filter[di, dj, k],并且所有的向量都被连接起来。
- tf.nn.convolution
- tf.nn.conv2d
- tf.nn.depthwise_conv2d
- tf.nn.depthwise_conv2d_native
- tf.nn.separable_conv2d
- tf.nn.atrous_conv2d
- tf.nn.atrous_conv2d_transpose
- tf.nn.conv2d_transpose
- tf.nn.conv1d
- tf.nn.conv3d
- tf.nn.conv3d_transpose
- tf.nn.conv2d_backprop_filter
- tf.nn.conv2d_backprop_input
- tf.nn.conv3d_backprop_filter_v2
- tf.nn.depthwise_conv2d_native_backprop_filter
- tf.nn.depthwise_conv2d_native_backprop_input
池操作
池操作通过输入张量扫描矩形窗口,计算每个窗口的缩减操作(平均值,最大值或最大值与 argmax).每个池操作使用大小 ksize 由偏移量分隔的矩形窗口 strides。例如,如果 strides 每个窗口都是所有窗口,如果每个窗口都是 strides 每个窗口都使用两个等等。
详细来说,输出是:
output[i] = reduce(value[strides * i:strides * i + ksize])
其中指数也考虑到填充值。Convolution 有关填充计算的详细信息,请参阅该部分。
- tf.nn.avg_pool
- tf.nn.max_pool
- tf.nn.max_pool_with_argmax
- tf.nn.avg_pool3d
- tf.nn.max_pool3d
- tf.nn.fractional_avg_pool
- tf.nn.fractional_max_pool
- tf.nn.pool
形态学滤波
形态运算符是图像处理中使用的非线性滤波器。
灰度形态扩张是标准求和积卷积的最大和对数:
$ output[b, y, x, c] = max_{dy, dx} input[b, strides[1] * y + rates[1] * dy, strides[2] * x + rates[2] * dx, c] + filter[dy, dx, c]$
在 filter 通常被称为构造功能。当过滤器采用全零值(也称为平面结构化功能)时,最大汇集是灰度形态扩张的特殊情况。
灰度形态侵蚀是标准和积卷积的最小和对数:
$ output[b, y, x, c] = min_{dy, dx} input[b, strides[1] * y - rates[1] * dy, strides[2] * x - rates[2] * dx, c] - filter[dy, dx, c]$
膨胀和侵蚀是相互的。构造信号 g 的输入信号 f 的扩张等于对 f 的反射 g 的侵蚀的否定,反之亦然。
以与标准卷积完全相同的方式进行横移和填充.详情请参阅Convolution一节。
- tf.nn.dilation2d
- tf.nn.erosion2d
- tf.nn.with_space_to_batch
规范化
规范化是有用的,以防止神经元饱和时,输入可能有不同的规模,并帮助泛化。
- tf.nn.l2_normalize
- tf.nn.local_response_normalization
- tf.nn.sufficient_statistics
- tf.nn.normalize_moments
- tf.nn.moments
- tf.nn.weighted_moments
- tf.nn.fused_batch_norm
- tf.nn.batch_normalization
- tf.nn.batch_norm_with_global_normalization
TensorFlow 损失操作
损失操作测量两张量之间或在张量和零之间的误差。这些可以用于测量网络在回归任务中的准确度,或用于正则化目的 (重量衰减)。
TensorFlow 分类操作
TensorFlow 提供了几个可以帮助您执行分类的操作。
- tf.nn.sigmoid_cross_entropy_with_logits
- tf.nn.softmax
- tf.nn.log_softmax
- tf.nn.softmax_cross_entropy_with_logits
- tf.nn.sparse_softmax_cross_entropy_with_logits
- tf.nn.weighted_cross_entropy_with_logits
TensorFlow 查找嵌套的张量
TensorFlow 提供库支持查找嵌套张量的值。
TensorFlow 构造递归神经网络
TensorFlow 提供了一些构建循环神经网络的方法。最接受一个 RNNCell-subclassed 对象(参见文档 tf.contrib.rnn)。
- tf.nn.dynamic_rnn
- tf.nn.bidirectional_dynamic_rnn
- tf.nn.raw_rnn
连接时间分类(CTC)
评估
评估操作对于测量网络的性能很有用。它们通常在评估时使用。
- tf.nn.top_k
- tf.nn.in_top_k
采样抽样
您是否要培养具有数千或数百万个输出类的多类或多标签模型(例如,具有较大词汇量的语言模型)?在这种情况下,使用完整的 Softmax 进行训练是缓慢的,因为对于每个训练示例都对所有课程进行了评估。候选抽样训练算法可以通过仅考虑每批培训示例的对比性类别(称为候选)的小随机选择子集来加快您的步骤时间。
采样损失函数
TensorFlow 提供以下采样丢失功能,用于更快的训练。
- tf.nn.nce_loss
- tf.nn.sampled_softmax_loss
候选采样
TensorFlow 提供以下采样器,用于在使用上述采样丢失函数之一时随机抽样候选类。
- tf.nn.uniform_candidate_sampler
- tf.nn.log_uniform_candidate_sampler
- tf.nn.learned_unigram_candidate_sampler
- tf.nn.fixed_unigram_candidate_sampler
杂项候选采样工具
TensorFlow 量化操作
- tf.nn.quantized_conv2d
- tf.nn.quantized_relu_x
- tf.nn.quantized_max_pool
- tf.nn.quantized_avg_pool
TensorFlow 神经网络相关函数的更多相关文章
- TensorFlow神经网络集成方案
TensorFlow神经网络集成方案 创造张力流create_tensorflow_neuropod 将TensorFlow模型打包为neuropod包. create_tensorflow_neur ...
- 【Magenta 项目初探】手把手教你用Tensorflow神经网络创造音乐
原文链接:http://www.cnblogs.com/learn-to-rock/p/5677458.html 偶然在网上看到了一个让我很感兴趣的项目 Magenta,用Tensorflow让神经网 ...
- Tensorflow 神经网络
Tensorflow让神经网络自动创造音乐 前几天看到一个有意思的分享,大意是讲如何用Tensorflow教神经网络自动创造音乐.听起来好好玩有木有!作为一个Coldplay死忠粉,第一想法就是自动生 ...
- 学习笔记TF055:TensorFlow神经网络简单实现一元二次函数
TensorFlow运行方式.加载数据.定义超参数,构建网络,训练模型,评估模型.预测. 构造一个满足一元二次函数y=ax^2+b原始数据,构建最简单神经网络,包含输入层.隐藏层.输出层.Tensor ...
- TensorFlow 神经网络教程
TensorFlow 是一个用于机器学习应用程序的开源库.它是谷歌大脑的第二代系统,在取代了近源的 DistBelief 之后,被谷歌用于研究和生产应用.TensorFlow 提供了很多种语言接口,包 ...
- tensorflow神经网络拟合非线性函数与操作指南
本实验通过建立一个含有两个隐含层的BP神经网络,拟合具有二次函数非线性关系的方程,并通过可视化展现学习到的拟合曲线,同时随机给定输入值,输出预测值,最后给出一些关键的提示. 源代码如下: # -*- ...
- TensorFlow神经网络中的激活函数
激活函数是人工神经网络的一个极其重要的特征.它决定一个神经元是否应该被激活,激活代表神经元接收的信息与给定的信息有关. 激活函数对输入信息进行非线性变换. 然后将变换后的输出信息作为输入信息传给下一层 ...
- Tensorflow神经网络进行fiting function
使用Tensorflow中的神经网络来拟合函数(y = x ^ 3 + 0.7) # -*- coding:utf-8 -*-import tensorflow as tf import numpy ...
- 封装TensorFlow神经网络
为了参加今年的软件杯设计大赛,这几个月学习了很多新知识.现在大赛的第二轮作品优化已经提交,开始对这四个月所学知识做一些总结与记录. 用TensorFlow搭建神经网络.TensorFlow将神经网络的 ...
随机推荐
- [autocomplete]如果条目末尾有空格,MustMatch不起作用
如果mustMatch被激活,我们发现,当条目最后包含一个空格时,一旦我们从列表中选择值,它将被拒绝.我们已经发现了这个问题,它在搜索事件中:在第184行,您修剪了输入的值: $.each(trimW ...
- URI/URL/URN的联系和区别
下面是我整理的一些关于他们的描述. URI,是uniform resource identifier,统一资源标识符,用来唯一的标识一个资源. 而URL是uniform resource locato ...
- MySQL5.7 Dockerfile
#Dockerfile for mysql5.7 FROM centos COPY ["src","/src"] RUN groupadd -g 1003 my ...
- JavaScript 示例
JavaScript 示例 <html lang="en"> <head> <meta charset="UTF-8"> & ...
- 01:云计算三种服务模式SaaS、PaaS和IaaS
1.1 云计算 1.什么是云计算 1. 云计算服务是指将大量用网络连接的计算资源统一管理和调度,构成一个计算资源池向用户按需服务. 2. 用户通过网络以按需.易扩展的方式获得所需资源和服务(资源包括网 ...
- 来自docker的嚎叫
好吧, 这是我第二次玩这个玩意了, 其实我现在这家公司是没有接触到docker的, 因此对它也是半桶水的状态, 之前有朋友叫我写过shell去离线部署它, 部署都那样不值一提, 后来到我第二次去接触它 ...
- 在res文件下新建文件夹
今天遇到了在res下新建文件夹的问题,无论是是Android studio中直接建还是在下载Android studio的物理地址中直接新建一个文件夹,在树结构中始终没有见到新建的文件,原来需要把An ...
- Spring错误——Spring 单元测试——Test class should have exactly one public constructor
背景:Spring 构建单元测试 错误 java.lang.Exception: Test class should have exactly one public constructor at or ...
- Windows Server 2008 R2 下载地址
以下资源均来自微软 MSDN,是原汁原味的原版系统资源,值得系统爱好者收藏.以下多数链接是 ed2k 链接,推荐使用国外开源的 eMule 下载,亦可使用迅雷,但使用 eMule 更有利于共享资源. ...
- python常用内置函数详解
1.abs(x) 返回一个数字的绝对值.参数可以是整数或浮点数.如果参数是复数,则返回它的大小 n = abs(-12.5) print(n) # 12.5 2.all(iterable) 如果所有的 ...