def broadcast_features()

in generation/models/pix2pixHD_model.py [0:0]


    def broadcast_features(self, features_dict, label_map, random=False, from_avg=False):
        label_map_np = label_map.cpu().numpy().astype(int)
        feat_map = self.Tensor(label_map.size()[0], self.opt.feat_num, label_map.size()[2], label_map.size()[3])
        for i in np.unique(label_map_np):
            label = i if i < 1000 else i//1000
            if label in features_dict:
                if label == 6 and random:
                    # print(features_dict[label].shape)
                    feat = self.get_z_random(features_dict[label].shape[-1]) #CHECK
                    feat = feat.view(-1, features_dict[label].shape[-1])
                else:
                    # print(features_dict[label].shape)
                    feat = features_dict[label]
                idx = (label_map == int(i)).nonzero()
                for k in range(self.opt.feat_num):
                    feat_map[idx[:,0], idx[:,1] + k, idx[:,2], idx[:,3]] = feat[0, k]
            else:
                if from_avg:
                    feat = np.expand_dims(self.avg_features[label, :], axis=0)
                    idx = (label_map == int(i)).nonzero()
                    for k in range(self.opt.feat_num):
                        feat_map[idx[:,0], idx[:,1] + k, idx[:,2], idx[:,3]] = feat[0, k]
                else:
                    pass
        if self.opt.data_type==16:
            feat_map = feat_map.half()
        return feat_map