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             # Licensed to the Apache Software Foundation (ASF) under one
2             # or more contributor license agreements. See the NOTICE file
3             # distributed with this work for additional information
4             # regarding copyright ownership. The ASF licenses this file
5             # to you under the Apache License, Version 2.0 (the
6             # "License"); you may not use this file except in compliance
7             # with the License. You may obtain a copy of the License at
8             #
9             # http://www.apache.org/licenses/LICENSE-2.0
10             #
11             # Unless required by applicable law or agreed to in writing,
12             # software distributed under the License is distributed on an
13             # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14             # KIND, either express or implied. See the License for the
15             # specific language governing permissions and limitations
16             # under the License.
17              
18             package AI::MXNet;
19 26     26   1329868 use v5.14.0;
  26         374  
20 26     26   201 use strict;
  26         70  
  26         818  
21 26     26   178 use warnings;
  26         68  
  26         1130  
22 26     26   12008 use AI::MXNet::Base;
  0            
  0            
23             use AI::MXNet::Callback;
24             use AI::MXNet::NDArray;
25             use AI::MXNet::Symbol;
26             use AI::MXNet::Executor;
27             use AI::MXNet::Executor::Group;
28             use AI::MXNet::CudaModule;
29             use AI::MXNet::Random;
30             use AI::MXNet::Initializer;
31             use AI::MXNet::Optimizer;
32             use AI::MXNet::KVStore;
33             use AI::MXNet::KVStoreServer;
34             use AI::MXNet::IO;
35             use AI::MXNet::Metric;
36             use AI::MXNet::LRScheduler;
37             use AI::MXNet::Monitor;
38             use AI::MXNet::Profiler;
39             use AI::MXNet::Module::Base;
40             use AI::MXNet::Module;
41             use AI::MXNet::Module::Bucketing;
42             use AI::MXNet::RNN;
43             use AI::MXNet::Visualization;
44             use AI::MXNet::RecordIO;
45             use AI::MXNet::Image;
46             use AI::MXNet::Contrib;
47             use AI::MXNet::CachedOp;
48             use AI::MXNet::AutoGrad;
49             use AI::MXNet::Gluon;
50             our $VERSION = '1.1';
51              
52             sub import
53             {
54             my ($class, $short_name) = @_;
55             if($short_name)
56             {
57             $short_name =~ s/[^\w:]//g;
58             if(length $short_name)
59             {
60             my $short_name_package =<<"EOP";
61             package $short_name;
62             no warnings 'redefine';
63             sub nd { 'AI::MXNet::NDArray' }
64             sub sym { 'AI::MXNet::Symbol' }
65             sub symbol { 'AI::MXNet::Symbol' }
66             sub init { 'AI::MXNet::Initializer' }
67             sub initializer { 'AI::MXNet::Initializer' }
68             sub optimizer { 'AI::MXNet::Optimizer' }
69             sub opt { 'AI::MXNet::Optimizer' }
70             sub rnd { 'AI::MXNet::Random' }
71             sub random { 'AI::MXNet::Random' }
72             sub Context { shift; AI::MXNet::Context->new(\@_) }
73             sub context { 'AI::MXNet::Context' }
74             sub cpu { AI::MXNet::Context->cpu(\$_[1]//0) }
75             sub gpu { AI::MXNet::Context->gpu(\$_[1]//0) }
76             sub kv { 'AI::MXNet::KVStore' }
77             sub recordio { 'AI::MXNet::RecordIO' }
78             sub io { 'AI::MXNet::IO' }
79             sub metric { 'AI::MXNet::Metric' }
80             sub mod { 'AI::MXNet::Module' }
81             sub mon { 'AI::MXNet::Monitor' }
82             sub viz { 'AI::MXNet::Visualization' }
83             sub rnn { 'AI::MXNet::RNN' }
84             sub callback { 'AI::MXNet::Callback' }
85             sub img { 'AI::MXNet::Image' }
86             sub image { 'AI::MXNet::Image' }
87             sub contrib { 'AI::MXNet::Contrib' }
88             sub autograd { 'AI::MXNet::AutoGrad' }
89             sub name { '$short_name' }
90             sub rtc { '$short_name' }
91             sub CudaModule { shift; AI::MXNet::CudaModule->new(\@_) }
92             sub AttrScope { shift; AI::MXNet::Symbol::AttrScope->new(\@_) }
93             *AI::MXNet::Symbol::AttrScope::current = sub { \$${short_name}::AttrScope; };
94             \$${short_name}::AttrScope = AI::MXNet::Symbol::AttrScope->new;
95             sub Prefix { AI::MXNet::Symbol::Prefix->new(prefix => \$_[1]) }
96             *AI::MXNet::Symbol::NameManager::current = sub { \$${short_name}::NameManager; };
97             *AI::MXNet::Symbol::NameManager::set_current = sub { \$${short_name}::NameManager = \$_[1]; };
98             \$${short_name}::NameManager = AI::MXNet::Symbol::NameManager->new;
99             *AI::MXNet::Context::current_ctx = sub { \$${short_name}::Context; };
100             *AI::MXNet::Context::current_context = sub { \$${short_name}::Context; };
101             *AI::MXNet::Context::set_current = sub { \$${short_name}::Context = \$_[1]; };
102             \$${short_name}::Context = AI::MXNet::Context->new(device_type => 'cpu', device_id => 0);
103             1;
104             EOP
105             eval $short_name_package;
106             }
107             }
108             }
109              
110             1;
111             __END__