def forward(self, v, v2=None): """v: tower to build. v2: image of tower we have built so far""" # insert batch if it is not already there if len(v.shape) == 3: v = np.expand_dims(v, 0) inserted_batch = True if v2 is not None: assert len(v2.shape) == 3 v2 = np.expand_dims(v2, 0) elif len(v.shape) == 4: inserted_batch = False pass else: assert False, "v has the shape %s" % (str(v.shape)) if v2 is None: v2 = np.zeros(v.shape) v = np.concatenate((v, v2), axis=3) v = np.transpose(v, (0, 3, 1, 2)) assert v.shape == (v.shape[0], 6, self.inputImageDimension, self.inputImageDimension) v = variable(v, cuda=self.CUDA).float() window = int(self.inputImageDimension / self.resizedDimension) v = F.avg_pool2d(v, (window, window)) #showArrayAsImage(np.transpose(v.data.numpy()[0,:3,:,:],[1,2,0])) v = self.encoder(v) if inserted_batch: return v.view(-1) else: return v
def forward(self, v): assert len(v) == self.inputImageDimension*self.inputImageDimension floatOnlyTask = list(map(float, v)) reshaped = [floatOnlyTask[i:i + self.inputImageDimension] for i in range(0, len(floatOnlyTask), self.inputImageDimension)] v = variable(reshaped).float() # insert channel and batch v = torch.unsqueeze(v, 0) v = torch.unsqueeze(v, 0) v = maybe_cuda(v, next(self.parameters()).is_cuda)/256. window = int(self.inputImageDimension/self.resizedDimension) v = F.avg_pool2d(v, (window,window)) v = self.encoder(v) return v.view(-1)