def setUp(self): tree = ((0, 1), ((2, 3), 4)) self.func = functions.BinaryHierarchicalSoftmax(3, tree) self.x = numpy.random.uniform(-1, 1, (2, 3)).astype(numpy.float32) self.t = numpy.array([0, 2]).astype(numpy.int32) self.gy = numpy.random.uniform(-1, 1, ()).astype(numpy.float32) self.W = self.func.W.copy()
print('n_vocab: %d' % n_vocab) print('data length: %d' % len(dataset)) if args.model == 'skipgram': train_model = skip_gram elif args.model == 'cbow': train_model = continuous_bow else: raise Exception('Unknown model type: {}'.format(args.model)) model = chainer.FunctionSet(embed=F.EmbedID(n_vocab, args.unit), ) if args.out_type == 'hsm': tree = F.create_huffman_tree(counts) model.l = F.BinaryHierarchicalSoftmax(args.unit, tree) loss_func = model.l elif args.out_type == 'ns': cs = [counts[w] for w in range(len(counts))] model.l = F.NegativeSampling(args.unit, cs, 20) loss_func = model.l elif args.out_type == 'original': model.l = F.Linear(args.unit, n_vocab) loss_func = lambda h, t: F.softmax_cross_entropy(model.l(h), t) else: raise Exception('Unknown output type: {}'.format(args.out_type)) if args.gpu >= 0: model.to_gpu() dataset = np.array(dataset, dtype=np.int32)