Tensorflow Keras 〜初めてのKeras〜

イントロダクション

Tensorflowでの計算処理をするのに色々試したけど結局はチュートリアルを見るのが一番ということになりました。

そしてここから学習を始めるように書いてあったので、そのようにします。

tensorflow.keras ※参考サイト

ここのチュートリアルから始めます。とりあえずは以下のコマンドを叩いてください。

!pip install -q pyyaml

しかし。自分の環境ではうまく行かなかったので以下のコマンドを叩きました。

pip3 install matplotlib

そして改めて「!pip〜」のコマンドを叩きました。しかしエラーが出ました。。。

とりあえずは無視してそのまま実行することにして。。。以下の起動確認をします。

kerasTest.pyを作成しました。下のコードです。 

import tensorflow as tffrom tensorflow.keras import layers

print(tf.VERSION)print(tf.keras.__version__)

そして実行します

python kerasTest.py

問題なく処理結果が出力されたのでとりあえずは問題なさそうです。

順次モデル※翻訳した時の文言

そして、単純なモデルを作成します。※コピペ

model = tf.keras.Sequential()
# Adds a densely-connected layer with 64 units to the model:
model.add(layers.Dense(64, activation='relu'))
# Add another:
model.add(layers.Dense(64, activation='relu'))
# Add a softmax layer with 10 output units:
model.add(layers.Dense(10, activation='softmax'))


「model = tf.keras.Sequential()」で空のモデルを作ります。ちなみにこの行以降は「何か」をモデルに追加しているのですが、意味はわかりませんでした。

レイヤー

model.add(layers.Dense(XX, activation='関数名')
  • activation:レイヤーの起動機能を設定します。このパラメーターは、組み込み関数の名前または呼び出し可能オブジェクトとして指定されています。デフォルトでは、アクティブ化は適用されません。
  • kernel_initializerそしてbias_initializer:レイヤーの重みを作り出す初期化スキーム(カーネルとバイアス)。このパラメーターは名前または呼び出し可能オブジェクトです。これはデフォルトで"Glorot uniform"イニシャライザになります。
  • kernel_regularizerそしてbias_regularizer:例えばL1またはL2正則としてレイヤの重み(カーネルとバイアス)、適用正則化スキーム。デフォルトでは、正則化は適用されません。

下はレイヤー作成のサンプルコードです。

# Create a sigmoid layer:layers.Dense(64, activation='sigmoid')# Or:layers.Dense(64, activation=tf.sigmoid)

# A linear layer with L1 regularization of factor 0.01 applied to the kernel matrix:layers.Dense(64, kernel_regularizer=tf.keras.regularizers.l1(0.01))

# A linear layer with L2 regularization of factor 0.01 applied to the bias vector:layers.Dense(64, bias_regularizer=tf.keras.regularizers.l2(0.01))

# A linear layer with a kernel initialized to a random orthogonal matrix:layers.Dense(64, kernel_initializer='orthogonal')

# A linear layer with a bias vector initialized to 2.0s:layers.Dense(64, bias_initializer=tf.keras.initializers.constant(2.0))

トレーニングと評価

今までの部分を整理します。

# 空のモデル作成
model = tf.keras.Sequential([
# レイヤーを追加
layers.Dense(64, activation='relu'),
# もう1つ(なぜ追加しているかは不明)
layers.Dense(64, activation='relu'),
# ソフトマックスを追加
layers.Dense(10, activation='softmax')])

# 学習プロセスの構成
model.compile(optimizer=tf.train.AdamOptimizer(0.001),
              loss='categorical_crossentropy',
              metrics=['accuracy'])

ここまできたら、あとは学習と評価をします。

model.fit(data, labels, epochs=10, batch_size=32)
 実行結果は下のようになりました。ソースはGITにアップしています
エポック1/10 
1000/1000 [============================ 218us /ステップ - 損失:11.6670  -  categoryorical_accuracy :0.0950 
Epoch 2/10 
1000/1000 [=========================  -   -  0秒43us / step  - 損失:11.5966 -  Categorical_accuracy:0.1040 
Epoch 3/10 
1000/1000 [============================================================= 1 0 41us / step  -  loss :11.5854 - categorical_accuracy:0.1160 
エポック4/10 
1000分の1000 [==============================] - 0の50US /ステップ- 喪失:11.5768  -  categorical_accuracy:0.0970 
Epoch 5/10 
1000/1000 [=====================================================================================================================================との関係はありません。 / step  -  loss:11.5758  -  categorical_accuracy:0.1000 
Epoch 6/10 
1000/1000 [=============================]  - 0秒62us /ステップ - 損失:11.5733  -  Categorical_accuracy:0.1020
エポック7/10 
1000/1000 [=======================  -  61秒/ステップ - 損失:11.5774  -  categoryorical_accuracy :0.1050 
Epoch 8/10 
1000/1000 [=========================  -   -  61秒/ステップ - 損失:11.5712 -  Categorical_accuracy:0.1110 
Epoch 9/10 
1000/1000 [========================================================================================== 1 :11.5688  -  categorical_accuracy:0.1220 
Epoch 10/10 
1000/1000 [=======================================================================================  -   -  1秒60秒/ステップ - 損失:11.5668  - カテゴリ精度:0.1240


現段階でわかったこと

Tensorflowでの機械学習は以下の手順を踏む

  1. モデルを作る
  2. モデルにレイヤーというものを追加する
  3. オプティマイザを使って学習プロセスを構成する
  4. 評価、予測などを行う

モデル、レイヤー、オプティマイザの3つを使用して学習プロセスの構成及び評価、予測などを行う。そしてこれらを以下の手法で拡張することができる

  1. モデルのサブクラス化:学習モデルの拡張
  2. カスタムレイヤー:レイヤー(シグモイド、ソフトマックスなど)
  3. コールバック:下記参照

今日はこの辺でいっぱいいっぱいです。

でわでわ。。。

[rakuten ids="aburajin:10011766"]

Python Tensorflow 〜初めての人工知能〜

イントロダクション

【in 2019】
今流行りのAIについて調べてみたものの、全くわからなかったのですが。このまま引き下がるのも男がすたる。。。※本当は必要になってきたので。。。

【in 2023】
以前学習したものの、使うレベルまでいかなかったので再度学習することにしました。しかし、イマイチ理解に及びませんでしたが、そのとっかかりとなるようなことをまとめました。

TensowFlow

Pythonで学習開始します。使用できる言語は以下ですが、「すべてを網羅できていない」ではなく、たぶん「網羅していない」というところでした。
理由としては、「必要ない」からです。まぁJava言語自体がいろいろとできる言語ですので。。。※Java言語の親はC言語です。

  1. Java: 全てを網羅(バンドル)できていないようです。が使用可能
  2. Go: 同上
  3. C: 注意書きなし→問題なく使える
  4. Python: 注意書きなし
  5. JavaScript
  6. Swift

いろんな言語で使用できるようです。しかしここはPythonで行きます。使いやすいのと、日本語ドキュメントがたくさんあるためです。
そして、個人的に「JavaとPythonの処理スピードの違い」をここではっきりとさせたいので、同じアプリをJava版とPython版で作成してみたいと思っている次第です。※道のりは遠そうです。。。

インストールTensorFlow

TeonsorFlowのインストールと起動、テストできる環境の構築をしたいと思います。

Jupyterを使う

JupyterをインストールするときにAnacondaも一緒にインストールされます。JupyterはAnacondaで動くためです。

インストール

Jupyterをインストールします。インストーラーがあるので、簡単にイけます。
インストール後に、Anaconda Navigaterを起動、TensorFlowをインストールします。

AnacondaNavigater

次に、AnacondaNavigaterでTensorFlowを追加します。まずは、設定を開きます。

そして、Createボタンを押下します。

TensorFlowのインストールする領域を作成します。Nameのところに「tensorflow」と入力

作成したところに再生ボタンのようなものがありますのでそれをクリックします。

そして下のコマンドをたたきます。

pip install tensorflow

これでインストールが完了です。

TensorFlowの実行

jupterで下のように、入力してPythonを実行してみると起動確認になります。

Windows版

まずは、参照するドキュメントを確認します。
ブラウザでことが足りるような形でのチュートリアルになっていました。チュートリアルに全部書いてあります。
Google Colaboratoryというアプリでブラウザ上でのプログラム起動ができるようです。使い方などがわかっていないのでイマイチですが、概要などわかりやすく書いていました。

プログラムの実行も行ったようですが、プログラムの全体が見えないのでよくわかりませんでした。。。

ちょっと頭をひねってみます。

Mac版 ※昔やったやつ

ここのサイトを見て行います。※Macへのインストールです。

1. virtualenvをインストールする

$pip3 install -U virtualenv

pythonがインストールしていない場合は以下のコマンドでインストール

brew update brew install python3  # Python 3

同様にHOME_BREWがインストールされていない場合

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" < /dev/null 2> /dev/null

2.virtualenvを作成する

virtualenvを作成するディレクトリに移動

mkdir ./venv

virtualenvを作成する

virtualenv --system-site-packages -p python3 ./venv

./venv/bin/activeを起動する

source ./venv/bin/active

virtualenvを終了する

deactivate

virtualenv上でtensorflowをインストールする

pip3 install --upgrade --ignore-installed https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-1.8.0-py3-none-any.whl

引数にURLを入力しています、URLの赤い字の部分にバージョン番号をセットしてインストールします。

https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-1.8.0-py3-none-any.whl

そして、インストール完了確認

python -c "import tensorflow as tf; tf.enable_eager_execution(); print(tf.reduce_sum(tf.random_normal([1000, 1000])))"

このままコピペでコンソールに入力してやります。実行結果は以下です。

(venv) takuminoMacBook-Pro:venv takk$ python3
Python 3.7.1 (default, Nov  6 2018, 18:49:54) 
[Clang 9.0.0 (clang-900.0.39.2)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import tensorflow
/Users/takk/WebPage/minim_server/python/venv/lib/python3.7/importlib/_bootstrap.py:219: RuntimeWarning: compiletime version 3.6 of module 'tensorflow.python.framework.fast_tensor_util' does not match runtime version 3.7
  return f(*args, **kwds)
>>> exit()

関連ページ一覧

  1. Tensorflow Keras〜初めのトレーニング_1〜
  2. Tensorflow Keras〜初めのトレーニング_2:前処理〜
  3. TensorFlow Keras〜テキストの分類〜
  4. TensorFlow Keras〜回帰、準備から予測まで〜

[rakuten ids="mtgec-beauty:10000599"]