行列の和を求める
行列の和をPerlで求めてみましょう。行列は列優先の行列だと考えてください。
# 数学の行列表現
# 3行2列の行列
# 1 4
# 2 5
# 3 6
# 列優先でのデータのもちかた
my $mat = {
values => [1, 2, 3, 4, 5, 6],
rows_length => 3,
columns_length => 2,
};
行列の和を求める計算は、配列の行列の各要素の和を求める計算を行うだけです。
行列の和を求めるPerlプログラム
行列の和を求めるPerlプログラムです。
use strict;
use warnings;
# 行列の和
sub mat_add {
my ($mat1, $mat2) = @_;
my $mat_out = {};
$mat_out->{rows_length} = $mat1->{rows_length};
$mat_out->{columns_length} = $mat2->{columns_length};
for (my $i = 0; $i < @{$mat1->{values}}; $i++) {
$mat_out->{values}->[$i] = $mat1->{values}->[$i] + $mat2->{values}->[$i];
}
return $mat_out;
}
my $mat1 = {
values => [1, 2, 3, 4, 5, 6],
rows_length => 3,
columns_length => 2,
};
my $mat2 = {
values => [7, 8, 9, 10, 11, 12],
rows_length => 3,
columns_length => 2,
};
# 行列の和
my $mat_add = mat_add($mat1, $mat2);
# [Matrix Add]Row:3, Column:2, Values:8 10 12 14 16 18
print "[Matrix Add]Row:$mat_add->{rows_length}, Column:$mat_add->{columns_length}, Values:@{$mat_add->{values}}\n";
Perl AI深層学習入門