def print_inst(self): print 'net parameters: \ntype: mlp' print 'scales:', self.config.input_dim.print_info() print '-->', self.config.output_dim.print_info() print '\nw:', self.config.weight_dim.print_info() print '\nb:', self.config.bias_dim.print_info() print '\n' InstTemplate.printInstInfo(self)
def __init__(self, layer): InstTemplate.__init__(self) self.config = layer self.out_inst_num = InstTemplate.mod(self, layer.output_dim.channel_, self.Tn) self.in_inst_num = InstTemplate.mod(self, layer.input_dim.channel_, self.sram_size) self.inst_number = self.out_inst_num * self.in_inst_num self.input_size_list = InstTemplate.token_size(self, layer.input_dim.channel_ * 2, self.sram_size * 2) self.output_size_list = InstTemplate.token_size(self, layer.output_dim.channel_ * 2, self.Tn * 2) self.weight_size_list = [] for y in xrange(self.in_inst_num): for x in xrange(self.out_inst_num): self.weight_size_list.append(self.input_size_list[y] * self.output_size_list[x] / 2) self.bias_size_list = self.output_size_list # address self.weight_addr_list = self.compute_addrs(layer.w_addr_base, self.weight_size_list) self.bias_addr_list = self.compute_addrs(layer.b_addr_base, self.bias_size_list) self.input_addr_list = self.compute_addrs(layer.input_addr_base, self.input_size_list) self.output_addr_list = self.compute_addrs(layer.output_addr_base, self.output_size_list) self.output_sram_addr_list = self.compute_addrs(0, self.output_size_list)