需要注意的是,上述的值是随机的,每次卷积核的值都是不同的,也可以自己指定
- import torch
- import torch.nn as nn
- class SimpleCNN(nn.Module):
- def __init__(self):
- super().__init__()
- self.conv = nn.Conv2d(3, 32, kernel_size=3, stride=1, padding=1, bias=False)
-
- # 手动初始化第一个卷积核(示例值)
- custom_kernel = torch.tensor([
- [[0.1, 0.2, 0.1],
- [0.2, 0.3, 0.2],
- [0.1, 0.2, 0.1]], # 第一个输入通道的卷积核
- [[0.0, -0.1, 0.0],
- [-0.1, 0.4, -0.1],
- [0.0, -0.1, 0.0]], # 第二个输入通道的卷积核
- [[-0.1, 0.0, -0.1],
- [0.0, 0.2, 0.0],
- [-0.1, 0.0, -0.1]] # 第三个输入通道的卷积核
- ], dtype=torch.float32)
-
- # 将第一个输出通道的卷积核赋值为自定义值
- self.conv.weight.data[0] = custom_kernel
- model = SimpleCNN()
- print("自定义卷积核:\n", model.conv.weight[0])
复制代码 |