AI-MXNet
view release on metacpan or search on metacpan
lib/AI/MXNet/RecordIO.pm view on Meta::CPAN
has 'uri' => (is => 'ro', isa => 'Str', required => 1);
has 'flag' => (is => 'ro', isa => enum([qw/r w/]), required => 1);
has 'handle' => (is => 'rw', isa => 'RecordIOHandle');
has [qw/writable
is_open/] => (is => 'rw', isa => 'Bool');
sub BUILD
{
my $self = shift;
$self->is_open(0);
$self->open();
}
sub DEMOLISH
{
shift->close;
}
=head2 open
Open record file.
=cut
method open()
{
my $handle;
if($self->flag eq 'w')
{
$handle = check_call(AI::MXNetCAPI::RecordIOWriterCreate($self->uri));
$self->writable(1);
}
else
{
$handle = check_call(AI::MXNetCAPI::RecordIOReaderCreate($self->uri));
$self->writable(0);
}
$self->handle($handle);
$self->is_open(1);
}
=head2 close
Close record file.
=cut
method close()
{
return if not $self->is_open;
if($self->writable)
{
check_call(AI::MXNetCAPI::RecordIOWriterFree($self->handle));
}
else
{
check_call(AI::MXNetCAPI::RecordIOReaderFree($self->handle));
}
$self->is_open(0);
}
=head2 reset
Reset pointer to first item. If record is opened with 'w',
this will truncate the file to empty.
=cut
method reset()
{
$self->close;
$self->open;
}
=head2 write
Write a string buffer as a record.
Parameters
----------
$buf : a buffer to write.
=cut
method write(Str $buf)
{
assert($self->writable);
check_call(
AI::MXNetCAPI::RecordIOWriterWriteRecord(
$self->handle,
$buf,
length($buf)
)
);
}
=head2 read
Read a record as a string.
Returns
----------
$buf : string
=cut
method read()
{
assert(not $self->writable);
return scalar(check_call(
AI::MXNetCAPI::RecordIOReaderReadRecord(
$self->handle,
)
));
}
method MXRecordIO(@args) { return AI::MXNet::RecordIO->new(uri => $args[0], flag => $args[1]) }
method MXIndexedRecordIO(@args)
{
return AI::MXNet::IndexedRecordIO->new(
idx_path => $args[0], uri => $args[1], flag => $args[2]
)
}
package AI::MXNet::IRHeader;
use Mouse;
has [qw/flag id id2/] => (is => 'rw', isa => 'Int');
has 'label' => (is => 'rw', isa => 'AcceptableInput');
around BUILDARGS => sub {
my $orig = shift;
my $class = shift;
( run in 2.362 seconds using v1.01-cache-2.11-cpan-483215c6ad5 )