Esempio n. 1
0
def train_fine_tuning(net, learning_rate, batch_size=128, num_epochs=5):
    train_iter = gdata.DataLoader(
        train_imgs.trainform_first(train_augs), batch_size, shuffle = True)
    test_iter = gdata.DataLoader(
        test_imgs.transform_first(test_augs), batch_size)
    ctx = d2l.try_all_gpus()
    net.collect_params().resnet_ctx(ctx)
    net.hybridize()
    loss = gloss.SoftmaxCrossEntropyLoss()
    trainer = gluon.Trainer(net.collect_params(), 'sgd', {'learning_rate': learning_rate,
                                                         'wd': 0.001})
    d2l.train(train_iter, test_iter, net, loss, trainer, ctx, num_epochs)
Esempio n. 2
0
                               self.constant_embedding(inputs),
                               dim=2)
        # 根据Conv1D要求的输入格式,将词向量维,即一维卷积层的通道维,变换到前一维
        embeddings = embeddings.transpose((0, 2, 1))
        # 对于每个一维卷积层,在时序最大池化后会得到一个形状为(批量大小, 通道大小, 1)的
        # NDArray。使用flatten函数去掉最后一维,然后在通道维上连结
        encoding = nd.concat(
            *[nd.flatten(self.pool(conv(embeddings))) for conv in self.convs],
            dim=1)
        # 应用丢弃法后使用全连接层得到输出
        outputs = self.decoder(self.dropout(encoding))
        return outputs


embed_size, kernel_sizes, nums_channels = 100, [3, 4, 5], [100, 100, 100]
ctx = d2l.try_all_gpus()
net = TextCNN(vocab, embed_size, kernel_sizes, nums_channels)
net.initialize(init.Xavier(), ctx=ctx)

glove_embedding = text.embedding.create(
    'glove', pretrained_file_name='glove.6B.100d.txt', vocabulary=vocab)
net.embedding.weight.set_data(glove_embedding.idx_to_vec)
net.constant_embedding.weight.set_data(glove_embedding.idx_to_vec)
net.constant_embedding.collect_params().setattr('grad_req', 'null')

lr, num_epochs = 0.001, 5
trainer = gluon.Trainer(net.collect_params(), 'adam', {'learning_rate': lr})
loss = gloss.SoftmaxCrossEntropyLoss()
d2l.train(train_iter, test_iter, net, loss, trainer, ctx, num_epochs)
d2l.predict_sentiment(net, vocab, ['this', 'movie', 'is', 'so', 'great'])
d2l.predict_sentiment(net, vocab, ['this', 'movie', 'is', 'so', 'bad'])
                x = F.flatten(self.feature_extractor(x))  # x变为NF的二维
                x = x.expand_dims(axis=0)  # x新增了一维,
                xs.append(x)
            X_ = nd.concat(*xs, dim=0)  # X_变为(T,N,F)
            output, state = self.rnn_layer(X_, state)  # 输出也成为TNF
            output = output.sum(
                axis=0, keepdims=False) / output.shape[0]  # 在时间步求平均,转换为NF
            Y = self.dense(output)  # Y输出(N,num_classes)
            return Y

    return LRCN_action_recognition_model(ctx=ctx)


net = get_action_recognition_model(ctx=ctx)
print(net)
loss = gloss.SoftmaxCrossEntropyLoss()

optimizer_params = {'learning_rate': 0.01, 'momentum': 0.9, 'wd': 5e-4}
# trainer = gluon.Trainer(net.collect_params('LRCN'), 'sgd', optimizer_params)
trainer = gluon.Trainer(net.collect_params(), 'sgd', optimizer_params)
net.rnn_layer.collect_params().setattr('lr_mult', 10)
net.dense.collect_params().setattr('lr_mult', 10)
d2l.train(train_iter=train_data,
          test_iter=val_data,
          net=net,
          loss=loss,
          trainer=trainer,
          ctx=ctx,
          num_epochs=num_epochs)
net.save_parameters(filename='./LRCN_AR_vgg16.params')