zoukankan      html  css  js  c++  java
  • TensorFlow 神经网络相关函数

    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
  • 相关阅读:
    PGL:Paddle带你走进图学习
    Improving the way neural networks learn
    文本语义匹配Simnet模型
    图卷积神经网络(GCN)
    git revert
    vi/vim多行注释和取消注释、复制粘贴
    谷歌之多任务学习模型MMoE
    阿里CVR预估模型之ESMM
    知识图谱简介
    CTR预估--Deep Interest Network
  • 原文地址:https://www.cnblogs.com/tsdblogs/p/10405793.html
Copyright © 2011-2022 走看看