本文共 1372 字,大约阅读时间需要 4 分钟。
通过实验验证,发现 torch.nn.functional.sigmoid 函数对图片的处理结果与原始图片相似,表明该函数对图片的处理并未显著改变其特征。以下是实验代码及结果分析:
import numpy as npimport torchfrom torch import nnimport cv2import matplotlib.pyplot as pltclass SiLU(nn.Module): @staticmethod def forward(x): return x * torch.sigmoid(x)if __name__ == "__main__": # 1. 读取图片 img2 = cv2.imread("img/2.jpg") images = img2.reshape(1, 3, img2.shape[0], img2.shape[1]) data = torch.tensor(images) datas = torch.tensor(images, dtype=torch.float32) # 2. 应用sigmoid激活函数 sigmoids = SiLU() datas = sigmoids(datas) # 3. 处理结果并保存 datas = datas.detach().numpy() result = datas.reshape(img2.shape[0], img2.shape[1], 3) result = (result - result.min()) * (255 / result.max()) cv2.imwrite("ss.jpg", result.astype("uint8")) cv2.imshow("ss", result.astype("uint8")) cv2.waitKey(0) BatchNorm 层用于对输入数据进行标准化处理,通常用于加速训练并稳定网络性能。以下是实现 BatchNorm 标准化的代码及效果展示:
import numpy as npimport torchfrom torch import nnimport cv2import matplotlib.pyplot as pltdef Norm(datas): v = 0.000001 for item in datas: means = item.mean() # 计算均值 vars = item.var() # 计算方差 x = (item - means) / (torch.sqrt(vars + v)) # 应用标准化 x = x.reshape(item.shape) return x
实验结果表明,BatchNorm 标准化对图片的处理效果较好,能够使图像颜色更加均匀,同时保持图片的原始信息。
转载地址:http://szrfk.baihongyu.com/