TensorFlow 激活函数

激活操作提供用于神经网络的不同类型的非线性。这些包括平滑的非线性(sigmoid,tanh,elu,softplus,和softsign),连续的,但不是到处可微函数(relu,relu6,crelu和relu_x),和随机正规化(dropout)。

所有激活操作应用于分量,并产生与输入张量相同形状的张量。

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],并且所有的向量都被连接起来。

池操作

池操作通过输入张量扫描矩形窗口,计算每个窗口的缩减操作(平均值,最大值或最大值与 argmax).每个池操作使用大小 ksize 由偏移量分隔的矩形窗口 strides。例如,如果 strides 每个窗口都是所有窗口,如果每个窗口都是 strides 每个窗口都使用两个等等。

详细来说,输出是:

output[i] = reduce(value[strides * i:strides * i + ksize])

其中指数也考虑到填充值。Convolution 有关填充计算的详细信息,请参阅该部分。

形态学滤波

形态运算符是图像处理中使用的非线性滤波器。

灰度形态扩张是标准求和积卷积的最大和对数:

$ 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一节。

规范化

规范化是有用的,以防止神经元饱和时,输入可能有不同的规模,并帮助泛化。

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)。

连接时间分类(CTC)

评估

评估操作对于测量网络的性能很有用。它们通常在评估时使用。

采样抽样

您是否要培养具有数千或数百万个输出类的多类或多标签模型(例如,具有较大词汇量的语言模型)?在这种情况下,使用完整的 Softmax 进行训练是缓慢的,因为对于每个训练示例都对所有课程进行了评估。候选抽样训练算法可以通过仅考虑每批培训示例的对比性类别(称为候选)的小随机选择子集来加快您的步骤时间。

采样损失函数

TensorFlow 提供以下采样丢失功能,用于更快的训练。

  • tf.nn.nce_loss
  • tf.nn.sampled_softmax_loss

候选采样

TensorFlow 提供以下采样器,用于在使用上述采样丢失函数之一时随机抽样候选类。

杂项候选采样工具

TensorFlow 量化操作

  • tf.nn.quantized_conv2d
  • tf.nn.quantized_relu_x
  • tf.nn.quantized_max_pool
  • tf.nn.quantized_avg_pool

TensorFlow 神经网络相关函数的更多相关文章

  1. TensorFlow神经网络集成方案

    TensorFlow神经网络集成方案 创造张力流create_tensorflow_neuropod 将TensorFlow模型打包为neuropod包. create_tensorflow_neur ...

  2. 【Magenta 项目初探】手把手教你用Tensorflow神经网络创造音乐

    原文链接:http://www.cnblogs.com/learn-to-rock/p/5677458.html 偶然在网上看到了一个让我很感兴趣的项目 Magenta,用Tensorflow让神经网 ...

  3. Tensorflow 神经网络

    Tensorflow让神经网络自动创造音乐 前几天看到一个有意思的分享,大意是讲如何用Tensorflow教神经网络自动创造音乐.听起来好好玩有木有!作为一个Coldplay死忠粉,第一想法就是自动生 ...

  4. 学习笔记TF055:TensorFlow神经网络简单实现一元二次函数

    TensorFlow运行方式.加载数据.定义超参数,构建网络,训练模型,评估模型.预测. 构造一个满足一元二次函数y=ax^2+b原始数据,构建最简单神经网络,包含输入层.隐藏层.输出层.Tensor ...

  5. TensorFlow 神经网络教程

    TensorFlow 是一个用于机器学习应用程序的开源库.它是谷歌大脑的第二代系统,在取代了近源的 DistBelief 之后,被谷歌用于研究和生产应用.TensorFlow 提供了很多种语言接口,包 ...

  6. tensorflow神经网络拟合非线性函数与操作指南

    本实验通过建立一个含有两个隐含层的BP神经网络,拟合具有二次函数非线性关系的方程,并通过可视化展现学习到的拟合曲线,同时随机给定输入值,输出预测值,最后给出一些关键的提示. 源代码如下: # -*- ...

  7. TensorFlow神经网络中的激活函数

    激活函数是人工神经网络的一个极其重要的特征.它决定一个神经元是否应该被激活,激活代表神经元接收的信息与给定的信息有关. 激活函数对输入信息进行非线性变换. 然后将变换后的输出信息作为输入信息传给下一层 ...

  8. Tensorflow神经网络进行fiting function

    使用Tensorflow中的神经网络来拟合函数(y = x ^ 3 + 0.7) # -*- coding:utf-8 -*-import tensorflow as tf import numpy ...

  9. 封装TensorFlow神经网络

    为了参加今年的软件杯设计大赛,这几个月学习了很多新知识.现在大赛的第二轮作品优化已经提交,开始对这四个月所学知识做一些总结与记录. 用TensorFlow搭建神经网络.TensorFlow将神经网络的 ...

随机推荐

  1. [autocomplete]如果条目末尾有空格,MustMatch不起作用

    如果mustMatch被激活,我们发现,当条目最后包含一个空格时,一旦我们从列表中选择值,它将被拒绝.我们已经发现了这个问题,它在搜索事件中:在第184行,您修剪了输入的值: $.each(trimW ...

  2. URI/URL/URN的联系和区别

    下面是我整理的一些关于他们的描述. URI,是uniform resource identifier,统一资源标识符,用来唯一的标识一个资源. 而URL是uniform resource locato ...

  3. MySQL5.7 Dockerfile

    #Dockerfile for mysql5.7 FROM centos COPY ["src","/src"] RUN groupadd -g 1003 my ...

  4. JavaScript 示例

    JavaScript 示例 <html lang="en"> <head> <meta charset="UTF-8"> & ...

  5. 01:云计算三种服务模式SaaS、PaaS和IaaS

    1.1 云计算 1.什么是云计算 1. 云计算服务是指将大量用网络连接的计算资源统一管理和调度,构成一个计算资源池向用户按需服务. 2. 用户通过网络以按需.易扩展的方式获得所需资源和服务(资源包括网 ...

  6. 来自docker的嚎叫

    好吧, 这是我第二次玩这个玩意了, 其实我现在这家公司是没有接触到docker的, 因此对它也是半桶水的状态, 之前有朋友叫我写过shell去离线部署它, 部署都那样不值一提, 后来到我第二次去接触它 ...

  7. 在res文件下新建文件夹

    今天遇到了在res下新建文件夹的问题,无论是是Android studio中直接建还是在下载Android studio的物理地址中直接新建一个文件夹,在树结构中始终没有见到新建的文件,原来需要把An ...

  8. Spring错误——Spring 单元测试——Test class should have exactly one public constructor

    背景:Spring 构建单元测试 错误 java.lang.Exception: Test class should have exactly one public constructor at or ...

  9. Windows Server 2008 R2 下载地址

    以下资源均来自微软 MSDN,是原汁原味的原版系统资源,值得系统爱好者收藏.以下多数链接是 ed2k 链接,推荐使用国外开源的 eMule 下载,亦可使用迅雷,但使用 eMule 更有利于共享资源. ...

  10. python常用内置函数详解

    1.abs(x) 返回一个数字的绝对值.参数可以是整数或浮点数.如果参数是复数,则返回它的大小 n = abs(-12.5) print(n) # 12.5 2.all(iterable) 如果所有的 ...