示例#1
0
    def post_init(self):
        """
        Initialize offset tensors
        """
        cond_lead, r_off = vconv.output_offsets(self.wavenet_vc['beg_grcc'],
                self.vc)
        assert r_off == 0
        self.register_buffer('cond_lead', torch.tensor(cond_lead))

        if self.vc == self.wavenet_vc['end_grcc']:
            skip_lead = 0
        else:
            skip_lead, r_off = vconv.output_offsets(self.vc.child,
                    self.wavenet_vc['end_grcc'])
            assert r_off == 0

        self.register_buffer('skip_lead', torch.tensor(skip_lead))
        self.register_buffer('left_wing_size', torch.tensor(self.vc.l_wing_sz))
示例#2
0
    def init_leads(self):
        """
        Update skip_lead and cond_lead to reflect changed geometry
        or chunk size.  Call this after vconv.compute_inputs is called
        """
        cond_lead, r_off = vconv.output_offsets(self.wavenet_vc['beg_grcc'],
                                                self.vc)
        assert r_off == 0

        if self.vc == self.wavenet_vc['end_grcc']:
            skip_lead = 0
        else:
            skip_lead, r_off = vconv.output_offsets(
                self.vc.child, self.wavenet_vc['end_grcc'])
            assert r_off == 0

        self.leads[0] = cond_lead
        self.leads[1] = skip_lead
        self.leads[2] = self.vc.l_wing_sz
        self.leads[3] = 0

        self.global_rf = self.vc.in_len()
        self.local_rf = self.vc.filter_size()
示例#3
0
    def __init__(self,
                 n_in_chan,
                 n_out_chan,
                 filter_sz,
                 stride=1,
                 do_res=True,
                 parent_vc=None,
                 name=None):
        super(ConvReLURes, self).__init__()
        self.n_in = n_in_chan
        self.n_out = n_out_chan
        self.conv = nn.Conv1d(n_in_chan,
                              n_out_chan,
                              filter_sz,
                              stride,
                              padding=0,
                              bias=True)
        self.relu = nn.ReLU()
        self.name = name
        # self.bn = nn.BatchNorm1d(n_out_chan)

        self.vc = vconv.VirtualConv(filter_info=filter_sz,
                                    stride=stride,
                                    parent=parent_vc,
                                    name=name)

        self.do_res = do_res
        if self.do_res:
            if stride != 1:
                print('Stride must be 1 for residually connected convolution',
                      file=stderr)
                raise ValueError
            l_off, r_off = vconv.output_offsets(self.vc, self.vc)
            self.register_buffer('residual_offsets',
                                 torch.tensor([l_off, r_off]))

        netmisc.xavier_init(self.conv)