代码之家  ›  专栏  ›  技术社区  ›  bliako

AI::MXNet(perlapi):如何适应动物园模型

  •  0
  • bliako  · 技术社区  · 6 年前

    下面的代码没有抱怨,但它不适合()。fit()会立即返回。我的数据集是一个RecordIO格式的图像文件(使用im2rec构建),我确信它是有效的。

    我已经从这里修改了代码 https://codehex.hateblo.jp/entry/2017/09/12/160149 ,其中原始作者以象征性方式创建模型(而不是从ModelZoo)。

    第二个问题是从一组图像创建数据加载器的最佳实践是什么。是我正在做的(使用 mx->io->ImageRecordIter )好吗?

    use strict;
    use warnings;
    
    use AI::MXNet qw/mx/;
    
    use AI::MXNet::Gluon qw/gluon/; # needed for nn-> (which must be replaced by gluon->nn->...)
    use AI::MXNet::Gluon::NN qw(nn); # for nn->
    use AI::MXNet::Gluon::ModelZoo::Vision::VGG;
    use AI::MXNet::Monitor;
    
    my $ctx = mx->cpu(0);
    
    my $vgg = AI::MXNet::Gluon::ModelZoo::Vision->get_vgg(
        11, # num layers
        (
            'classes' => 26, # latin alphabet recognition
            'root' => 'abc', # where to save the models
            'ctx' => $ctx # context
        )
    );
    die "get the model" unless defined $vgg;
    
    my $batch_size = 4;
    # num channels, width, height our png training images of letters:
    my $img_shape = [3, 256, 256];
    my $training_file = 'training.bin';
    my $train_dataiter = mx->io->ImageRecordIter({
        'path_imgrec' => $training_file,
        'path_imglist' => 'training.lst',
        # num channels, width, height
        'data_shape' => $img_shape,
        'batch_size' => $batch_size,
        'label_width' => 1, # dimensionality of labels, for us is 1 (i.e. just the letter name)
    });
    die "mx->io->ImageRecordIter()" unless defined $train_dataiter;
    
    $vgg->init_params(initializer => mx->init->Xavier(magnitude => 2));
    $vgg->init_optimizer(optimizer => 'sgd', optimizer_params => {learning_rate => 0.1});
    $vgg->initialize();
    
    print "$0 : fitting ...\n";
    $vgg->fit(
        $train_dataiter,
        'num_epoch' => 1000
    );
    
    0 回复  |  直到 6 年前
        1
  •  2
  •   Hito Yume    6 年前

    这不是正确的等待训练。ModelZoo返回一个胶子混合块。 “fit”用于模块接口。 了解如何使用胶子进行训练:

    https://metacpan.org/source/SKOLYCHEV/AI-MXNet-1.4/examples/gluon/mnist.pl

    与模块相同: https://metacpan.org/source/SKOLYCHEV/AI-MXNet-1.4/examples/mnist.pl

    您可以致电->混合块的导出方法,如$vgg->导出(); https://metacpan.org/source/SKOLYCHEV/AI-MXNet-1.4/lib/AI/MXNet/Gluon/Block.pm#L1242

    这将把网络的json结构和当前参数保存到一个文件中。