我的意思是,除了像这样的东西:
def __init__(self):
super(Net, self).__init__()
self.conv1 = nn.Conv2d(1, 10, 3)
您可以使用常量过滤器,如filter_vals = np.array([[-1, -1, 1], [-1, -1, 1], [-1, -1, 1]])
在同一层。
发布于 2021-10-11 07:51:43
我想,你希望随机参数是可学习的(requires_grad),而固定参数是不可学习的。我不认为它应该在一个conv
中完成,而应该是两个,然后是连接,例如:
conv1 = nn.Conv2d(1, 6, 3)
conv2 = nn.Conv2d(1, 4, 3)
conv2.weight = ...
y1 = conv1(x)
with torch.no_grad():
y2 = conv2(x)
y = torch.cat( (y1,y2), dim=3 )
发布于 2021-10-11 08:00:36
假设您要寻找的是用filter_vals
中定义的权重替换卷积层的权重,您可以首先将其扩展到滤波器的数量,这里是10
,然后替换conv1
的权重
>>> conv1.weight.data = torch.from_numpy(filter_vals).expand_as(conv1.weight)
https://stackoverflow.com/questions/69528452
复制相似问题