File Coverage

blib/lib/AI/MXNet.pm
Criterion Covered Total %
statement 9 11 81.8
branch n/a
condition n/a
subroutine 4 4 100.0
pod n/a
total 13 15 86.6


line stmt bran cond sub pod time code
1             package AI::MXNet;
2 19     19   625839 use v5.14.0;
  19         58  
3 19     19   87 use strict;
  19         34  
  19         352  
4 19     19   79 use warnings;
  19         42  
  19         459  
5 19     19   4620 use AI::MXNet::Base;
  0            
  0            
6             use AI::MXNet::Callback;
7             use AI::MXNet::NDArray;
8             use AI::MXNet::Symbol;
9             use AI::MXNet::Executor;
10             use AI::MXNet::Executor::Group;
11             use AI::MXNet::Rtc;
12             use AI::MXNet::Random;
13             use AI::MXNet::Initializer;
14             use AI::MXNet::Optimizer;
15             use AI::MXNet::KVStore;
16             use AI::MXNet::KVStoreServer;
17             use AI::MXNet::IO;
18             use AI::MXNet::Metric;
19             use AI::MXNet::LRScheduler;
20             use AI::MXNet::Monitor;
21             use AI::MXNet::Profiler;
22             use AI::MXNet::Module::Base;
23             use AI::MXNet::Module;
24             use AI::MXNet::Module::Bucketing;
25             use AI::MXNet::RNN;
26             use AI::MXNet::Visualization;
27             use AI::MXNet::RecordIO;
28             use AI::MXNet::Image;
29             use AI::MXNet::Contrib;
30             use AI::MXNet::Contrib::AutoGrad;
31             use AI::MXNet::CachedOp;
32             our $VERSION = '1.0102';
33              
34             sub import
35             {
36             my ($class, $short_name) = @_;
37             if($short_name)
38             {
39             $short_name =~ s/[^\w:]//g;
40             if(length $short_name)
41             {
42             my $short_name_package =<<"EOP";
43             package $short_name;
44             no warnings 'redefine';
45             sub nd { 'AI::MXNet::NDArray' }
46             sub sym { 'AI::MXNet::Symbol' }
47             sub symbol { 'AI::MXNet::Symbol' }
48             sub init { 'AI::MXNet::Initializer' }
49             sub initializer { 'AI::MXNet::Initializer' }
50             sub optimizer { 'AI::MXNet::Optimizer' }
51             sub opt { 'AI::MXNet::Optimizer' }
52             sub rnd { 'AI::MXNet::Random' }
53             sub random { 'AI::MXNet::Random' }
54             sub Context { shift; AI::MXNet::Context->new(\@_) }
55             sub cpu { AI::MXNet::Context->cpu(\$_[1]//0) }
56             sub gpu { AI::MXNet::Context->gpu(\$_[1]//0) }
57             sub kv { 'AI::MXNet::KVStore' }
58             sub recordio { 'AI::MXNet::RecordIO' }
59             sub io { 'AI::MXNet::IO' }
60             sub metric { 'AI::MXNet::Metric' }
61             sub mod { 'AI::MXNet::Module' }
62             sub mon { 'AI::MXNet::Monitor' }
63             sub viz { 'AI::MXNet::Visualization' }
64             sub rnn { 'AI::MXNet::RNN' }
65             sub callback { 'AI::MXNet::Callback' }
66             sub img { 'AI::MXNet::Image' }
67             sub contrib { 'AI::MXNet::Contrib' }
68             sub name { '$short_name' }
69             sub AttrScope { shift; AI::MXNet::Symbol::AttrScope->new(\@_) }
70             *AI::MXNet::Symbol::AttrScope::current = sub { \$${short_name}::AttrScope; };
71             \$${short_name}::AttrScope = AI::MXNet::Symbol::AttrScope->new;
72             sub Prefix { AI::MXNet::Symbol::Prefix->new(prefix => \$_[1]) }
73             *AI::MXNet::Symbol::NameManager::current = sub { \$${short_name}::NameManager; };
74             \$${short_name}::NameManager = AI::MXNet::Symbol::NameManager->new;
75             *AI::MXNet::Context::current_ctx = sub { \$${short_name}::Context; };
76             \$${short_name}::Context = AI::MXNet::Context->new(device_type => 'cpu', device_id => 0);
77             1;
78             EOP
79             eval $short_name_package;
80             }
81             }
82             }
83              
84             1;
85             __END__