常用库
Pytorch & Tensor
矩阵操作
函数 | 含义 | 常见用法示例 |
---|---|---|
torch.nn.Linear(in_features, out_features, bias=True, device=None, dtype=None) |
线性变换 | m = nn.Linear(20, 30) output = m(input) |
torch.nn.Conv2d |
卷积 | torch.nn.Conv2d(in_channels=3, out_channels=8, kernel_size=3, stride=1, padding=1) |
torch.nn.AdaptiveAvgPool2d(output_size) |
全局池化 | m = nn.AdaptiveAvgPool2d(1) |
torch.nn.PixelShuffle(upsale_factor = ...) |
将输入的低分辨率图像块进行像素重排,生成更大尺寸的高分辨率图像块 | pixel_shuffle = nn.PixelShuffle(3) output = pixel_shuffle(input) |
torch.cat |
拼接变量,拼接纬度 | input = torch.cat([output_deconv, y], 1) # Bsx9x64x64 , 1表示从第二个纬度(此处为C)开始拼接 |
torch.matmul(input, other, *, out=None) |
张量乘法 | torch.matmul(tensor1, tensor2) |
Activation Functions
函数 | 含义 |
---|---|
torch.nn.ReLU(inplace=False) |
$ReLU(x) = x, x >0$ |
torch.nn.Sigmoid(*args, **kwargs) |
$Sigmoid(x) = \dfrac{ 1 }{ 1 + e^{-x} }$ |
torch.nn.LeakyReLU(negative_slope=0.01, inplace=False) |
$f(x) = \begin{cases} x & x > 0 \\ -NS \cdot x & x < 0 \end{cases}$ |
torch.nn.SiLU(inplace=False) |
$SiLu = x \cdot Sigmoid(x)$ |
def forward(self, x): s = torch.relu(x**2) return s |
$y = x^2,x > 0$ |
其他
函数 | 含义 | 常见用法示例 |
---|---|---|
torch.randn |
随机生成Tensor | torch.randn(1, 3, 256, 256) # NxCxHxW |
torch.nn.Sequential |
创建按顺序执行的神经网络 | self.backbone = nn.Sequential(self.res1,self.res2,self.res3,self.res4) |
torchsummary.summary |
输出神经网络的摘要信息 | summary(model, input_size=[(8, 16, 16), (1, 64, 64)], batch_size=1) |
SummaryWriter |
将数据写入TensorBoard日志文件 | writer = SummaryWriter('./train_logs/50') |
torch.utils.data.DataLoader |
数据加载, num_workers 表示线程数,为0表示在主线程中加载, drop_last(bool) 设为True会丢弃最后一个batch的剩余样本,确保每个batch都有batch_size个样本。 |
training_data_loader = DataLoader(dataset=train_set, num_workers=0, batch_size=batch_size, shuffle=True, pin_memory=True, drop_last=True) |
torch.tensor.repeat |
在各个维度上对x 进行复制 |
pan = y.repeat(1, 8, 1, 1) # Bsx8x64x64 |
torch.tensor.detach() |
将张量从计算图中剥离,不对原有的计梯度等数据进行任何影响 | |
torch.nn.BatchNorm2d(num_features, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True, device=None, dtype=None) |
批量归一化 |
Numpy
函数 | 含义 | 示例 |
---|---|---|
numpy.argmax(a, axis=None, out=None, *, keepdims=<no value>) |
返回axis 上的最大值 |
CV2 & h5py
CV2 函数
函数 | 含义 | 常见用法 |
---|---|---|
cv2.boxFilter |
方框滤波 | cv2.boxFilter(data[i, :, :], -1, (5, 5)) |
h5py
HDF5 是一种数据存储格式和库,用于有效地组织、存储和管理大量的科学数据。HDF5 文件可以包含多个数据集(dataset)和组(group),以层次结构的方式组织数据。每个数据集可以存储多维数组、表格数据、图像、文本等各种类型的数据。
经验 & 技巧总结
Category | Concept |
---|---|
torch.nn.ConvTranspose2d |
逆卷积, $Output = \Big[ \dfrac{ H + 2P - K }{ S } + 1 \Big] \times \Big[ \dfrac{ W + 2P - K }{ S } + 1\Big]$ |
$P$ | $K$ | $S$ | OutPut |
---|---|---|---|
2 | 8 | 4 | $\dfrac{ H }{4 } \times \dfrac{ W }{ 4 }$ |
1 | 5 | 3 | $\dfrac{ H }{3 } \times \dfrac{ W }{ 3 }$ |
0 | 2 | 2 | $\dfrac{ H }{2 } \times \dfrac{ W }{ 2 }$ |