未分類

TensorFlow.jsに関するブクマと雑談

概要

今後TensorFlow.jsについて使用を検討している。

機械学習、主にDeep Learningについてはいくつかの選択肢があるうち主流はPythonであると認識しているが、

  • Pythonを常用実行する環境は整えていないこと
  • 現状常時Pythonを動作させる予定がないこと
  • 上述によりデータストック環境もあまり考えていないこと

このため、インターネットブラウザ上で動作させることで利用ができる方が運用がしやすい。

そのため今回はTensorFlow.jsに焦点を絞ることにした。

 

ちなみに機械学習で利用できるライブラリは主にこんな感じではないだろうか

 

機械学習のライブラリ・フレームワーク

  • NumPy(ナンパイ)
  • Pandas(パンダス)
  • SciPy(サイパイ)
  • Matplotlib(マットプロットリブ)
  • scikit-learn(サイキット・ラーン)
  • dlib(ディーリブ)
  • TensorFlow(テンソルフロー)
  • Keras(ケラス)

 

特にこれまで機械学習についてはほとんど扱ったことがないが、しいていうとAppleのCoreMLをどこかで利用した記憶はある。(が、もう忘れた笑)

 

機械学習とは

一応奇特にもこのページを見に来た方がもしいるかもしれないので念のために書いておくと、いわゆるAIと言われるものが近年話題になっていることは耳にしていると思うけれども、その中でいくつかの手法に分かれている。

ネットで様々な情報があるが、どうもどのサイトも専門用語満載でまるで一般人にわかりやすい説明になっている感じがしない。おそらく翻訳するのが関の山で50%くらいしか本当は意味がわかっていないのではないだろうか。

個人的におおまかにはこんな分類なのではないだろうか。うち2つが最近よく使われている方法、最後のものが古くからある概念で、あまり人工知能といっても簡単に言えばLINE BOTみたいなものである。だいたいどんなものかもそれでわかるだろう。

  • 機械学習
  • Deep Learning
  • 応答型AI

 

機械学習、Deep Learningも大枠ではどちらも機械学習という方法の中での種類の違いであり、膨大なデータを与えて学習させるとその結果を応用して、様々な仕組みに活かされるというそんな感じだろう。

専門用語を使うと専門用語を知るもの同士でしか意思疎通ができないのであるから、ここではこれくらいに留めておき、もっと詳しく深く知りたい人は、調査するのが宜しかろう。

率直に個人的な意見を述べさせてもらうと機械学習にも限界があるし、コスト等も考えた時、はっきり言って人間を教育する方が圧倒的安い可能性がある。そもそも人間は給料なんかもらわなくても勝手に生まれてからそれぞれが学習しているのである。そもそも生まれた瞬間から死ぬまで学習し続けるようにできているのだから、そうした意味での知能と言う意味では人間の知能と人工知能とを比べたところであまり意味がないのではないだろうか。

そもそも人間が扱うために人工知能を作るのであり、人工知能のために人間が存在すると言うことになるはずがないのである。

 

こんなことを書いているが、個人的にはあくまで機械学習については上で書いたように以前AppleのCoreMLをちょっといじった程度である。

 

機械学習を扱うための環境

通常コンピューターではこれまでCPUが使われているのはご存知かもしれない。日本語にすると中央演算装置などというわけのわからない用語になっているのだが、はっきり言って元々英語のものを日本語にしたからといってわかりにくくなるくらいなら最初からCPUと呼んだ方がわかりやすいのではないだろうか。

だいたい日本語でも覚えなければならないということになると同じ1つのものをCPUと中央演算装置と2倍記憶しなければならず、人間の頭脳には記憶に限界があるのだからなるべく空っぽにしておいたほうが余裕ができるのである。余計な用語は本当に増やさないでもらいたい(あくまで個人的な意見である)どの分野でもそれぞれ専門用語満載で本当にどこまでみなが理解できるのか本当に疑わしいものである。これでは専門用語を覚えるのが勉強なのか、新しい概念を獲得するのが勉強なのかどちらをやっているのかまるでわからないのではないだろうか。

完全に横道に逸れてしまったが、機械学習を扱うにあたってどのような環境が必要か、について書いておく。

(ちなみに書いている現時点では把握はしていないのである。書きながら不明に行き当たったらリアルタイムで調べているのである。ちなみにちょっとした忘備録として書き出したつもりのこの記事がここまででも結構なボリュームになっているのでちょっと焦っているのは秘密である謎)

 

機械学習を扱う上でのポイント

上記でCPUの話をしたのは、機械学習では主に使われるのがGPUであるからである。GPUとはよくグラフィックボード、グラボと呼ばれるが、わかりやすくいえばゲーミングパソコンに搭載されているそれである。
3Dゲームをサクサクで動かすために必要なGPUを機械学習では活用することになる。

(ついでにゲームでもすればいいんじゃないか謎)

簡単にいえばGPUを搭載したパソコンが必要と言うことであり、厳密にはどのパソコンにもGPUは搭載されているがその性能によって顕著に動作速度などに大きく差が出るようだ。特にMacは機械学習にはあまり向いていないようではある。将来的にどうなるかというところだろうか。

 

ちなみにゲーミングパソコンについては以前こんな記事を出している。コスパも良いかな

 

ゲーミングパソコンを買えばゲームができて、Unity開発も快適にできる上に機械学習までできるらしい<=イマココ僕の頭の中

 

M1Macもこの用途ではそんなに活躍しないようですね。
しばらくはCore i9 Macbook Proでなんとかなるか試す感じですね。

 

補足:クラウド環境(AWS,Azuleなど)でも実行できます

現在は用途的な都合で特に僕は考えていません

 

利用の準備

ブラウザベースのプロジェクトでTensorFlow.jsを利用する方法は主に2つあります。

 

今回のところは貼り付けておくだけで深く考えません。

 

参考になるサンプルを探しておく

とりあえず大抵は動かしてみた方が理解が早いので、よくわからないものを、

よくわからない頭で悩んでいても始まらない、スポーツでも趣味でも、

なんでもまずは実行してみよう。そのあとで振り返って考えてみると理解できることが増えている。

 

tensorflow – csvデータセットのモデルを作成し、TensorFlow JSを使用して予測結果を計算する方法

TensorFlow JSは初めてです。
TensorFlow JSのドキュメントに従ってモデルを作成し、作成したモデルから予測結果を計算するようにモデルをトレーニングしました。

しかし、CSVファイル用に作成されたモデルをトレーニングし、CSVファイルの2つ以上の列の予測結果を計算する方法がわかりません。
CSVファイルを使用してモデルを作成、トレーニングし、予測結果を計算するためのサンプルを教えてもらえますか?

const csvUrl = ‘https://storage.googleapis.com/tfjs-examples/multivariate-linear-regression/data/boston-housing-train.csv’;
function save(model) {
return model.save(‘downloads://boston_model’);
}
function load() {
return tf.loadModel(‘indexeddb://boston_model’);
}
async function run() {
// We want to predict the column “medv”, which represents a median value of a
// home (in $1000s), so we mark it as a label.
const csvDataset = tf.data.csv(
csvUrl, {
columnConfigs: {
medv: {
isLabel: true
}
}
});
// Number of features is the number of column names minus one for the label
// column.
const numOfFeatures = (await csvDataset.columnNames()).length – 1;
// Prepare the Dataset for training.
const flattenedDataset =
csvDataset
.map(([rawFeatures, rawLabel]) =>
// Convert rows from object form (keyed by column name) to array form.
[Object.values(rawFeatures), Object.values(rawLabel)])
.batch(10);
// Define the model.
const model = tf.sequential();
model.add(tf.layers.dense({
inputShape: [numOfFeatures],
units: 1
}));
model.compile({
optimizer: tf.train.sgd(0.000001),
loss: ‘meanSquaredError’
});
// Fit the model using the prepared Dataset
model.fitDataset(flattenedDataset, {
epochs: 10,
callbacks: {
onEpochEnd: async (epoch, logs) => {
console.log(epoch, logs.loss);
}
}
});
const savedModel=save(model);
}
run().then(() => console.log(‘Done’));

 

大まかにいえばデータファイルを読みこんでループで記憶して学習を蓄積していくイメージになるだろう。

人間も本や新聞を行、列ごとに読み込んでいくわけで機械学習でも同じような作業をするわけだ。

ちなみに人間には記憶方法が、それぞれの人の特に強い器官と連動した記憶の方法が何通りかあり、中には特殊な記憶方法を持つ人がいて、瞬間を画像として記憶する人、僕は次の方法なのだが映像で記憶する人がいる。僕の場合は記憶の時間を遡ることができて巻き戻すことができる代わりに詳細な部分は鮮明ではない。その他、音に関連した記憶の仕方、嗅覚と関連するなど意外に人それぞれ違うのではないだろうか。

 

とりあえず今回はこの辺にして次は実行してみようかと思うが報告の方法はまた検討しようかと思う。

それでは。

 

管理人

TensorFlow.jsに関するブクマと雑談” への1件のフィードバック

コメントは受け付けていません。