在神经网络中,降维和升维是处理数据时常用的技术。降维可以减少数据的维度,从而减少计算量和过拟合的风险;升维则是增加数据的维度,以便神经网络能够更好地捕捉数据中的复杂特征。以下是一些在TensorFlow中常用的降维和升维方法:### 降维方法1. **主成

摘要:大名鼎鼎的UNet和我们经常看到的编解码器模型,他们的模型都是先将数据下采样,也称为特征提取,然后再将下采样后的特征恢复回原来的维度。这个特征提取的过程我们称为“下采样”,这个恢复的过程我们称为“上采样”,本文就专注于神经网络中的下采样和上
大名鼎鼎的UNet和我们经常看到的编解码器模型,他们的模型都是先将数据下采样,也称为特征提取,然后再将下采样后的特征恢复回原来的维度。这个特征提取的过程我们称为“下采样”,这个恢复的过程我们称为“上采样”,本文就专注于神经网络中的下采样和上采样来进行一次总结。写的不好勿怪哈。 神经网络中的降维方法 池化层   池化层(平均池化层、最大池化层),卷积 平均池化层 pytorch nn.AvgPool1d nn.AvgPool2d tensorflow tf.layers.AveragePooling1D tf.layers.AveragePooling2D 最大池化层 pytorch nn.MaxPool1d nn.MaxPool2d tensorflow tf.layers.MaxPooling1D tf.layers.MaxPooling2D 还有另外一些pool层:nn.LPPool、nn.AdaptiveMaxPool、nn.AdaptiveAvgPool、nn.FractionalMaxPool2d 卷积 普通卷积 pytorch nn.Conv1d nn.Conv2d tensorflow tf.layers.Conv1D tf.layers.Conv2D 还有一些独特的卷积,感兴趣的可以自己去了解 扩张卷积 (又称空洞卷积):tf.nn.atrous_conv2d depthwise卷积:tf.nn.depthwise_conv2d 分离卷积:tf.nn.separable_conv2d 量化卷积:tf.nn.quantized_conv2d ... 升维方法 插值方法 插值方法有很多种有:阶梯插值、线性插值、三次样条插值等等 numpy的实现方法我在另外一篇文章中已经介绍过了,为了避免重复,想要了解的同学请移步【插值方法及python实现】 pytorch实现方法 torch.nn.Upsample(size=None, scale_factor=None, mode='nearest', align_corners=None) 对给定多通道的1维(时间)、2维(空间)、3维(体积)数据进行上采样。 1维(向量数据),输入数据Tensor格式为3维:(batch_size, channels, width) 2维(图像数据),输入数据Tensor格式为4维:(batch_size, channels, height, width) 3维(点云数据),输入数据Tensor格式为5维:(batch_size, channels, depth, height, width) 参数 size:输入数据(一维 or 二维 or 三维) scale_factor:缩放大小 mode:上采样算法(nearest(最近邻插值)、linear(线性插值)、bilinear(双线性插值)、bicubic(双三次插值)、trilinear(三次线性插值)) align_corners:如果为True,则输入和输出张量的角像素对齐,从而保留这些像素处的值。 仅在模式为“线性”,“双线性”或“三线性”时有效。 默认值:False 返回: Input:$(N, C, W_{in}), (N, C, H_{in}, W_{in}) 或(N, C, D_{in}, H_{in}, W_{in})$ Output: $(N, C, W_{out}), (N, C, H_{out}, W_{out}) 或(N, C, D_{out}, H_{out}, W_{out})$ $D_{out}​=[D_{in}​× \text{scale_factor}]$ $H_{out} = [H_{in} \times \text{scale_factor}]$ $W_{out} = [W_{in} \times \text{scale_factor}]$ unpooling   Unpooling是在CNN中常用的来表示max pooling的逆操作。
阅读全文