カテゴリー
【tensorflowjs入門】Danfojsでテンソルの標準出力を整形する
※ 当ページには【広告/PR】を含む場合があります。
2020/08/27
2022/08/18
tensorflowjsそのままの標準出力はお世辞にも見やすいとは言えません。
一次元と二次元テンソルの使用限定ですが、テンソル値を確認したいときに
今回はDanfo.jsを利用したコンソールでの表示例をちょっとだけ紹介します。
インストール方法
今回はCLI版をインストールして、nodeコマンドからの利用を前提に使います。
なので、お手元の環境にて
node.js
なお現在の動作確認時のnodeインストール状況は、
$ node -v
v12.18.3
$ npm -v
6.14.6
$ yarn -v
1.22.4
まずは
danfojs-node
tensorflowjs-node
$ yarn add @tensorflow/tfjs-node danfojs-node
これで
danfo.js
1次元テンソル
まずは
main.js
const tf = require("@tensorflow/tfjs-node");
tf.tensor([12,34,56,78]).print();
ではこれをnodeでコンソールから実行します。
$ node main.js
#...いつものテンソル表示
Tensor
[12, 34, 56, 78]
この程度の単純なテンソルならまだテンソルの全体像が把握できるのですが、次元数・要素数が大きくなったり、小数点表示が細かすぎたりすると、表示が潰れて標準出力としては使い物にならなくなるのが難点でした。
さて、
main.js
const tf = require("@tensorflow/tfjs-node");
const dfd = require("danfojs-node");
//tf.tensor([12,34,56,78]).print();
(new dfd.Series(tf.tensor([12,34,56,78]))).print();
これを実行すると、以下のようなテーブル仕立てのテンソル表示になります。
$ node main.js
╔═══╤══════════════════════╗
║ │ 0 ║
╟───┼──────────────────────╢
║ 0 │ 12 ║
╟───┼──────────────────────╢
║ 1 │ 34 ║
╟───┼──────────────────────╢
║ 2 │ 56 ║
╟───┼──────────────────────╢
║ 3 │ 78 ║
╚═══╧══════════════════════╝
tensorflowjsの一次元テンソル値を
Series
二次元テンソル
二次元テンソルで利用したい場合には、
main.jsを以下のように書き換えてみます。
const tf = require("@tensorflow/tfjs-node");
const dfd = require("danfojs-node");
//👇tensorflowjs標準のテンソル表示
tf.tensor2d([[12, 34, 2.2, 2], [30, 30, 2.1, 7]]).print();
//👇danfo.jsの二次元テンソル表示
(new dfd.DataFrame(tf.tensor2d(
[[12, 34, 2.2, 2], [30, 30, 2.1, 7]]
))).print();
これを実行すると、
$ node main.js
#👇tensorflowjs標準のテンソル表示
Tensor
[[12, 34, 2.2 , 2],
[30, 30, 2.0999999, 7]]
#👇danfo.jsの二次元テンソル表示
Shape: (2,4)
╔═══╤═══════╤══════╤═════════╤════════╗
║ │ 0 │ 1 │ 2 │ 3 ║
╟───┼───────┼──────┼─────────┼────────╢
║ 0 │ 12 │ 34 │ 2.20000004768... │ 2 ║
╟───┼───────┼──────┼─────────┼────────╢
║ 1 │ 30 │ 30 │ 2.09999990463... │ 7 ║
╚═══╧═══════╧══════╧═════════╧════════╝
といったように利用できるようです。
まとめ
Danfo.jsは、Tensorflow(Python)の
本家Tensorflowからtensorflowjsに移行する開発者にとっては使いやすいユーティリティかもしれません。
参照
記事を書いた人
ナンデモ系エンジニア
主にAngularでフロントエンド開発することが多いです。 開発環境はLinuxメインで進めているので、シェルコマンドも多用しております。 コツコツとプログラミングするのが好きな人間です。
カテゴリー