ホーム » TensorLayer » TensorFlow : TensorLayer : チュートリアル (1) Welcome

TensorFlow : TensorLayer : チュートリアル (1) Welcome

TensorFlow : TensorLayer : チュートリアル (1) Welcome (翻訳/解説)

翻訳 : (株)クラスキャット セールスインフォメーション
作成日時 : 12/01/2018

* 本ページは、TensorLayer の以下のドキュメントを翻訳した上で適宜、補足説明したものです:

* サンプルコードの動作確認はしておりますが、必要な場合には適宜、追加改変しています。
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。

 

TensorLayer : README.md

TensorLayer は研究者と技術者のための新しい TensorFlow-ベースの深層学習そして強化学習ライブラリです。それは現実世界の AI アプリケーションを構築するための鍵となるカスタマイズ可能なニューラル層 / 関数の巨大なコレクションを提供します。TensorLayer は ACM Multimedia Society により 2017 ベスト・オープンソース・ソフトウェアとして表彰されています。

 

特徴

深層学習実践者として、様々な開発目的を扱えるライブラリを探し求めていました。このライブラリは多様なサンプル、チュートリアルそして事前訓練されたモデルを提供することにより採用することが容易です。また、それはユーザに TensorFlow を容易に再調整する (= fine-tune) ことを可能にします; その一方でプロダクション配備のために適合します。TensorLayer はこれら総ての目的を満たすことを目指します。それは 3 つのキー特徴を持ちます :

  • 単純性 : TensorLayer は TensorFlow の低位データフロー・インターフェイスを高位層 / モデルにリフトします。広いコミュニティにより貢献された豊富はサンプルコードを通して学習することは非常に容易です。
  • 柔軟性 : TensorLayer API は透過的です : それは TensorFlow をユーザからマスクしません ; 低位調整と深いカスタマイゼーションを手助けする大希望なフックを残します。
  • Zero-cost 抽象 : TensorLayer は TensorFlow の完全なパワーを達成します。

TensorLayer はライブラリ風景のユニークな位置に立ちます。Keras と TFLearn のような他のラッパー・ライブラリもまた高位抽象を提供します。けれども、それらはユーザから基礎をなすエンジンをしばしば隠します、それはそれらをカスタマイズして再調整することを困難にします。反対に、TensorLayer API は一般に柔軟で透過的です。ユーザはサンプルとチュートリアルで始めて、それから TensorFlow にシームレスにダイブすることが容易であることをしばしば見い出すでしょう。加えて、TensorLayer は Keras, TFSlim と TFLearn からのコンポーネントをインポートするためのネイティブ・サポートを通してロックインされたライブラリを作成しません。

TensorLayer は Imperial College London, UC Berkeley, Carnegie Mellon University, Stanford University, と University of Technology of Compiegne (UTC) のような大学、そして Google, Microsoft, Alibaba, Tencent, Xiaomi, と Bloomberg のような企業からのトップ研究者と技術者の中で素早く高まる利用を持ちます。

 

チュートリアル (1)

深層学習について、このチュートリアルは (おそらくニューラルネットワークの “Hello World” である) MNIST データセットを使用して貴方に手書き数字分類器の構築を案内します。強化学習については、元のスクリーン入力からコンピュータに Pong ゲームをプレーすることを学習させます。自然言語処理については、単語埋め込みから始めてそして言語モデリングと機械翻訳を記述します。

このチュートリアルは Google TensorFlow 深層学習チュートリアルの総てのモジュール化された実装を含みますので、TensorFlow 深層学習チュートリアルを同時に読むこともできます。

Note: For experts: InputLayer と DenseLayer のソースコードを読んでください、TensorLayer がどのように動作するか理解するでしょう。その後、Github のコードを直接読むことを進めます。

 

Before we start

チュートリアルは貴方がニューラルネットワークと TensorFlow にある程度精通していることを仮定しています。Deeplearning Tutorial からニューラルネットワークの基礎を学習することを試せます。

人工ニューラルネットワークへのよりスローペースなイントロダクションについては、Andrej Karpathy et al. による Convolutional Neural Networks for Visual Recognition、Michael Nielsen による Neural Networks と Deep Learning を勧めます。

TensorFlow について更に学習するためには、TensorFlow チュートリアルを見てください。それの総てを必要とはしませんが、TensorLayer を使用できるためにはどのように TensorFlow が動作するかについて基本的な理解は必要です。

 

TensorLayer is simple

次のコードは TensorLayer の単純な例を示します、tutorial_mnist_simple.py を見てください。私達は多くの単純な関数(like fit() , test() ) を提供しますけれども、詳細を理解して機械学習エキスパートになることを望むのであれば、データ反復ツールボックス (tl.iterate) と sess.run() のような TensorFlow のネイティブ API を使用してネットワークを訓練することを提案します。より詳細は tutorial_mnist.py, tutorial_mlp_dropout1.py と tutorial_mlp_dropout2.py を見てください。

import tensorflow as tf
import tensorlayer as tl

sess = tf.InteractiveSession()

# prepare data
X_train, y_train, X_val, y_val, X_test, y_test = \
                                tl.files.load_mnist_dataset(shape=(-1,784))

# define placeholder
x = tf.placeholder(tf.float32, shape=[None, 784], name='x')
y_ = tf.placeholder(tf.int64, shape=[None, ], name='y_')

# define the network
network = tl.layers.InputLayer(x, name='input_layer')
network = tl.layers.DropoutLayer(network, keep=0.8, name='drop1')
network = tl.layers.DenseLayer(network, n_units=800,
                                act = tf.nn.relu, name='relu1')
network = tl.layers.DropoutLayer(network, keep=0.5, name='drop2')
network = tl.layers.DenseLayer(network, n_units=800,
                                act = tf.nn.relu, name='relu2')
network = tl.layers.DropoutLayer(network, keep=0.5, name='drop3')
# the softmax is implemented internally in tl.cost.cross_entropy(y, y_, 'cost') to
# speed up computation, so we use identity here.
# see tf.nn.sparse_softmax_cross_entropy_with_logits()
network = tl.layers.DenseLayer(network, n_units=10,
                                act = tf.identity,
                                name='output_layer')
# define cost function and metric.
y = network.outputs
cost = tl.cost.cross_entropy(y, y_, 'cost')
correct_prediction = tf.equal(tf.argmax(y, 1), y_)
acc = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))
y_op = tf.argmax(tf.nn.softmax(y), 1)

# define the optimizer
train_params = network.all_params
train_op = tf.train.AdamOptimizer(learning_rate=0.0001, beta1=0.9, beta2=0.999,
                            epsilon=1e-08, use_locking=False).minimize(cost, var_list=train_params)

# initialize all variables in the session
tl.layers.initialize_global_variables(sess)

# print network information
network.print_params()
network.print_layers()

# train the network
tl.utils.fit(sess, network, train_op, cost, X_train, y_train, x, y_,
            acc=acc, batch_size=500, n_epoch=500, print_freq=5,
            X_val=X_val, y_val=y_val, eval_train=False)

# evaluation
tl.utils.test(sess, network, acc, X_test, y_test, x, y_, batch_size=None, cost=cost)

# save the network to .npz file
tl.files.save_npz(network.all_params , name='model.npz')
sess.close()
 

以上






AI導入支援 #2 ウェビナー

スモールスタートを可能としたAI導入支援   Vol.2
[無料 WEB セミナー] [詳細]
「画像認識 AI PoC スターターパック」の紹介
既に AI 技術を実ビジネスで活用し、成果を上げている日本企業も多く存在しており、競争優位なビジネスを展開しております。
しかしながら AI を導入したくとも PoC (概念実証) だけでも高額な費用がかかり取組めていない企業も少なくないようです。A I導入時には欠かせない PoC を手軽にしかも短期間で認知度を確認可能とするサービの紹介と共に、AI 技術の特性と具体的な導入プロセスに加え運用時のポイントについても解説いたします。
日時:2021年10月13日(水)
会場:WEBセミナー
共催:クラスキャット、日本FLOW(株)
後援:働き方改革推進コンソーシアム
参加費: 無料 (事前登録制)
人工知能開発支援
◆ クラスキャットは 人工知能研究開発支援 サービスを提供しています :
  • テクニカルコンサルティングサービス
  • 実証実験 (プロトタイプ構築)
  • アプリケーションへの実装
  • 人工知能研修サービス
◆ お問合せ先 ◆
(株)クラスキャット
セールス・インフォメーション
E-Mail:sales-info@classcat.com