sampler=sampler,
                        num_workers=20)
    nhead = 4
    score_model = ScoreModel(kdd_dataset.unknown_token + 1,
                             1024,
                             1024,
                             use_bert=use_bert).cuda()
    image_encoder = ImageEncoder(input_dim=2048, output_dim=1024, nhead=nhead)
    image_encoder.load_pretrained_weights(
        path='../user_data/image_encoder_large.pth')
    image_encoder = image_encoder.cuda()
    # text_generator = TextGenerator(score_model.embed.num_embeddings).cuda()
    # score_model = ScoreModel(30522, 256, num_heads=1).cuda()
    # category_embedding = CategoryEmbedding(256).cuda()

    optimizer = Adam(score_model.get_params() + image_encoder.get_params())

    if start_epoch > 0 and local_rank == 0:
        checkpoints = torch.load(
            os.path.join(checkpoints_dir,
                         'model-epoch{}.pth'.format(start_epoch)))
        score_model.load_state_dict(checkpoints['score'])
        image_encoder.load_state_dict(checkpoints['item'])
        # text_generator.load_state_dict(checkpoints['generator'])
        optimizer.load_state_dict(checkpoints['optimizer'])
        print("load checkpoints")
    # generator = iterate_minibatches(iters=(30 - start_epoch) * len(loader), batch_size=256, num_workers=8, root_dir='/home/dingyuhui/dataset/kdd-data', use_bert=use_bert)

    scheduler = ExponentialLR(optimizer, 0.95, last_epoch=start_epoch - 1)
    score_model = nn.parallel.DistributedDataParallel(
        score_model,
예제 #2
0
                        num_workers=15)
    nhead = 4
    text_encoder = TextEncoder(kdd_dataset.unknown_token + 1,
                               1024,
                               256,
                               use_bert=use_bert).cuda()
    image_encoder = ImageEncoder(input_dim=2048, output_dim=1024, nhead=nhead)
    image_encoder.load_pretrained_weights(
        path='../user_data/image_encoder_large.pth')
    image_encoder = image_encoder.cuda()
    score_model = ScoreModel(1024, 256).cuda()
    # text_generator = TextGenerator(text_encoder.embed.num_embeddings).cuda()
    # score_model = ScoreModel(30522, 256, num_heads=1).cuda()
    # category_embedding = CategoryEmbedding(256).cuda()

    optimizer = Adam(image_encoder.get_params() + text_encoder.get_params() +
                     score_model.get_params())

    if start_epoch > 0 and local_rank == 0:
        checkpoints = torch.load(
            os.path.join(checkpoints_dir,
                         'model-epoch{}.pth'.format(start_epoch)), 'cpu')
        text_encoder.load_state_dict(checkpoints['query'])
        image_encoder.load_state_dict(checkpoints['item'])
        score_model.load_state_dict(checkpoints['score'])
        # text_generator.load_state_dict(checkpoints['generator'])
        optimizer.load_state_dict(checkpoints['optimizer'])
        print("load checkpoints")
    # generator = iterate_minibatches(iters=(30 - start_epoch) * len(loader), batch_size=256, num_workers=8, root_dir='/home/dingyuhui/dataset/kdd-data', use_bert=use_bert)

    scheduler = ExponentialLR(optimizer, 0.95, last_epoch=start_epoch - 1)