MCPcopy Create free account
hub / github.com/BorealisAI/scaleformer / __init__

Method __init__

models/FiLMMS.py:139–178  ·  view source on GitHub ↗
(self, in_channels, out_channels,seq_len, modes1,compression=0,ratio=0.5,mode_type=0)

Source from the content-addressed store, hash-verified

137
138class SpectralConv1d(nn.Module):
139 def __init__(self, in_channels, out_channels,seq_len, modes1,compression=0,ratio=0.5,mode_type=0):
140 super(SpectralConv1d, self).__init__()
141
142
143 """
144 1D Fourier layer. It does FFT, linear transform, and Inverse FFT.
145 """
146
147 self.in_channels = in_channels
148 self.out_channels = out_channels
149 self.modes1 = modes1
150 self.compression = compression
151 self.ratio = ratio
152 self.mode_type=mode_type
153 if self.mode_type ==1:
154 modes2 = modes1
155 self.modes2 =min(modes2,seq_len//2)
156 self.index0 = list(range(0, int(ratio*min(seq_len//2, modes2))))
157 self.index1 = list(range(len(self.index0),self.modes2))
158 np.random.shuffle(self.index1)
159 self.index1 = self.index1[:min(seq_len//2,self.modes2)-int(ratio*min(seq_len//2, modes2))]
160 self.index = self.index0+self.index1
161 self.index.sort()
162 elif self.mode_type > 1:
163 modes2 = modes1
164 self.modes2 =min(modes2,seq_len//2)
165 self.index = list(range(0, seq_len//2))
166 np.random.shuffle(self.index)
167 self.index = self.index[:self.modes2]
168 else:
169 self.modes2 =min(modes1,seq_len//2)
170 self.index = list(range(0, self.modes2))
171
172 self.scale = (1 / (in_channels*out_channels))
173 self.weights1 = nn.Parameter(self.scale * torch.rand(in_channels, out_channels, len(self.index), dtype=torch.cfloat))
174 if self.compression > 0:
175 print('compressed version')
176 self.weights0 = nn.Parameter(self.scale * torch.rand(in_channels,self.compression,dtype=torch.cfloat))
177 self.weights1 = nn.Parameter(self.scale * torch.rand(self.compression,self.compression, len(self.index), dtype=torch.cfloat))
178 self.weights2 = nn.Parameter(self.scale * torch.rand(self.compression,out_channels, dtype=torch.cfloat))
179
180
181 def forward(self, x):

Callers

nothing calls this directly

Calls 1

__init__Method · 0.45

Tested by

no test coverage detected