Repository navigation
Expand file tree
/
Copy pathnetwork.py
More file actions
57 lines (39 loc) · 2.03 KB
/
Copy pathnetwork.py
File metadata and controls
57 lines (39 loc) · 2.03 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
import numpy as np
import torch.nn as nn
import torch
################################################# network class #################################################
class BF_CNN(nn.Module):
def __init__(self, args):
super(BF_CNN, self).__init__()
self.padding = args.padding
self.num_kernels = args.num_kernels
self.kernel_size = args.kernel_size
self.num_layers = args.num_layers
self.num_channels = args.num_channels
self.conv_layers = nn.ModuleList([])
self.running_sd = nn.ParameterList([])
self.gammas = nn.ParameterList([])
self.conv_layers.append(nn.Conv2d(self.num_channels,self.num_kernels, self.kernel_size, padding=self.padding , bias=False))
for l in range(1,self.num_layers-1):
self.conv_layers.append(nn.Conv2d(self.num_kernels ,self.num_kernels, self.kernel_size, padding=self.padding , bias=False))
self.running_sd.append( nn.Parameter(torch.ones(1,self.num_kernels,1,1), requires_grad=False) )
g = (torch.randn( (1,self.num_kernels,1,1) )*(2./9./64.)).clamp_(-0.025,0.025)
self.gammas.append(nn.Parameter(g, requires_grad=True) )
self.conv_layers.append(nn.Conv2d(self.num_kernels,self.num_channels, self.kernel_size, padding=self.padding , bias=False))
def forward(self, x):
relu = nn.ReLU(inplace=True)
x = relu(self.conv_layers[0](x))
for l in range(1,self.num_layers-1):
x = self.conv_layers[l](x)
# BF_BatchNorm
sd_x = torch.sqrt(x.var(dim=(0,2,3) ,keepdim = True, unbiased=False)+ 1e-05)
if self.conv_layers[l].training:
x = x / sd_x.expand_as(x)
self.running_sd[l-1].data = (1-.1) * self.running_sd[l-1].data + .1 * sd_x
x = x * self.gammas[l-1].expand_as(x)
else:
x = x / self.running_sd[l-1].expand_as(x)
x = x * self.gammas[l-1].expand_as(x)
x = relu(x)
x = self.conv_layers[-1](x)
return x