FLAGS - みる会図書館


検索対象: TensorFlowはじめました : 実践!最新Googleマシンラーニング
17件見つかりました。

1. TensorFlowはじめました : 実践!最新Googleマシンラーニング

処理するファイルをコマンドラインの引数 ( ーー fi (e) に指定して実行すると、図 2.3 のような画 像が、データセットと同じディレクトリに書き出されます。 -file . /data/data—batch_l . bin $ python3 convert—cifarl@—png ・ py 図 2.3 : 取り出した C 旧 AR -10 画像 ( 拡大 ) ⅢⅢⅢⅢⅢⅢⅢⅢⅢⅢⅢⅢⅢⅢⅢⅢⅢⅢⅢⅢⅢⅢⅢⅢⅢⅢⅢⅢⅢⅢⅢⅢⅢⅢⅢⅢⅢⅢⅢⅢⅢⅢⅢ Note: tf. app. flags リスト 2.2 冒頭にある tf. app. ftags は、コマンドラインの引数を簡単に設定する機能を提供します。 ⅢⅢⅢⅢⅢⅢⅢⅢⅢⅢⅢⅢⅢⅢⅢⅢⅢⅢⅢⅢⅢⅢⅢⅢⅢⅢⅢⅢⅢⅢⅢⅢⅢⅢⅢⅢⅢⅢⅢⅢⅢⅢⅢ これは Google がオープンソースで公開している「 gflags 」の PYthon 実装「 python-gflags (https: 〃 github.com/google/python-gflags) 」と同等のものです。 22 推論 (inference) 画像データの読み込みができたら、次は画像の種類 ( クラス ) を判別します。これを「推論」と 呼びます。 リスト 2.3 の inference 関数は、与えた画像 (image-node) が、どのクラスに属するのか推論す るグラフを構築します。この推論グラフのことを「モデル」や「ネットワーク」と呼びます。 本書では、推論のモデルとして、多層の CNN(Conv01utional Neural Network: 畳み込みニューラル ネットワーク ) を使います。 リスト 2.3 : model.py # coding: UTF-8 <import absotute—import- future ~ from =import division future— from print function import from future_ CIFAR-IO の学習と評価 22 第 2 章

2. TensorFlowはじめました : 実践!最新Googleマシンラーニング

FLAGS. batch—sfze) 0 0 を Q- 0 】・ 1 1 」 0 QY 1 0 t.D C 一・ 1 〔 V 9AC ・ 1 +J bD 一 0 第 0 1 ~ P batch—labet tf. reshape (batch-labet, [FLAGS. batch_sizeJ ッ ー ' tabel-batch つ -with tf. gfile. FastGFite(graph—fiIe, -æräph—def• tf. GraphDef(V graph—def. ParseFromString()„ . read() ) tfl importzgraph—def(graph—def,aname=t' finput 」 image = tf. get—defautt—graph ()•get—tensor_by_name ( ' input—image : 0 ' ) 。 = 一 tabet—placehotder tf. ptaceholder(dtype=tf. int32 , shape= CFLAGS. batch—sizeJ) 'rb')Vasr f: <true—count = 0 =num—iter = math. ceil ( 10000 /FLAGS. batch—size) ー , num—steps—per—epoch ~ num_iter ☆ FLAGS. batch—size try: # バッチごとに評価 for step in range(num—iter) : whitten=irnageE labels = sess, runC [batch—Hmage$€ batch—1abetJ true—count + = np. sum(predictions) 第 4 章 CIFAR-10f 闘記

3. TensorFlowはじめました : 実践!最新Googleマシンラーニング

読み込み リスト 3.2 : 「 esto 「 e 関数 def —restore (saver,& sess) : 保存したチェックポイントの読み込みには、 saver. restore メソッドを使います ( リスト 32 ) 。 from tensorftow. python. framework<mport graph—io リスト 3.3 : train. py リスト 3.3 は、セッションの変数とグラフをファイルに保存する一 export ー graph 関数です。 に保存できます。 graph—util の convert_variables_to_constants を使うと、グラフと変数を一つのファイル 読み込み時にエラーが発生します ルターサイズや枚数を変更するなどすると したがって、チェックポイントを保存した後にグラフを変更するとー一例えば、畳み込み層のフィ Saver によるチェックポイントが保存するのは、セッションに紐付いた変数に限定されます。 グラフ + 変数 ます。 チェックポイントをリストアすると、変数はチェックポイントを保存したときの値に更新され ます。複数のファイルがある場合、 Saver は最新のチェックポイントを自動的に読み込みます。 保存のときと同様、ファイル名ではなくチェックポイントを保存しているディレクトリを指定し =saver;restore(sess , checkpoint•model—checkpointupath) 一 f= 、 checkpoint and checkpoint. modet—checkpoint—path; æcheckpoint = tf.train. get—checkpoint—state(FLAGS. checkpoint_di rY tf€app. flags 、 DEF 工 NE—string( ' test—data ' , None, ”テストデータのパス ! ! ) ー→ チェックポイントを保存するディレクをリ” ) ' : /checkpoi nts/', tf. app. flags. DEFINE—stringC checkpoint—dirp -tf;app. flags. DEF 工 NE-string('data-diHYßMdata/' , ”訓練データのディレグトリⅣ ) ~ tfVapp. fIågs.DEF 工 NQintegerCepochVB@, 訓練する Epoch 数 'i) tf.app. flags. FLAGS FLAG S = : ; を = ”グラフを保存するディレクトリ ・ Ugraphs/ ' , tf.app.ftags. DEFINE—string('graphudir' FLAGS. graph di 5 ~ ー graph—io.write—graph(sess. graph—defy name 'graph—96@2d—epoch.pbV96 epoch def-—export—graph(sess, epoch) : 第 3 章データ保存とフィルターの可視化

4. TensorFlowはじめました : 実践!最新Googleマシンラーニング

1 一 V ・ 1 00 C い > c て ( 1 を 0 一 batch—label 言 tf.reshape(batch-labet.@ [FLAGS. batch_size] , ' batch—labet' ) ン イ 1 0 わ V t otaÜIoss train—op >logits• model. inference(input—image, keepprob—placeholder, batch—si ze=FLAGS. batch—size)? —10ss(10gits,%batch=IabeIV trai n(total—loss, global—step) with tf. Session() as sess: sess 、 ) total_duration = 0 tf. train•start_queue_runners(sess=sess) num—steps—per—epoch mathvceil 工 0000 ~ ☆ 5TFLAGS. batch—size) fo 「 step range (epoch—step ☆ = ード AGS. epoch け薹ユ ) ) : ーツ loss—value = sess. run([train—op, totat—toss] , feed—dict={ ー = ー keepprob—ptacehotder: 鈑 5 =if ;step % num—steps—per—epoch epoch = int(step / num—steps—per—epoch) *saver•save(sess, FLAGS. checkpoint—di ry gtobatustep=epoch) —export—graph (sess» epoch) printCTota1 duration = 96d sec ? % total—duration) 第 4 章 CIFAR-1()ff 闘記

5. TensorFlowはじめました : 実践!最新Googleマシンラーニング

リスト 2.16 : train with_eval.py FLAGS *. flags 、下 LAGS tf. app. ftags. DEFINE—integer(Yepoch', 30 い " 訓練するモ PO ( h 数リ ”訓練データのディ、レクト屮ツ ytf•app. flags. 、 DEFINE—sfring('data-dir' /data/ ' 第 2 章 CIFAR-IO の学習と評価 image reader . read(index) fo 「•index in 「 ange ( 10e0 のは「 reader 三 Ci far1@Reader(fi1enames [file—index] ) print( ' Epoch %d : % 、、 % (epoch' fitenames[file—index) ) ) fo&file—indexs* n range ( 5 ) : +total—duration = 0 globa!+step = tf 、 Variab1e(), trainabte=Fa1se) def mai n argv=None) い startU€ime 一 time. ( ) をを→ = fo 「第 epoch n range い : , FLAGS. epoch+& 1 ) ・ sess ・ run(tf.gtobal—variables—initializer()) with tf. Session() as sess: 。・ top ー k ー 0 のダは f は nn. in—topLk(Vogits»ユ abel—placeholderj 1 ) t に 2 i n こ 0 p —trai n(total—loss/ gtobal—step) logits• model.i nference(image-node) t oexpand—dims(train—ptaceholderr-@ # —(height, width ep セ h 濵ト > (batch,ftlei ght/ width+h depth)- tabel—ptaceholder• tf.pIaceh01der(tf.int32,r shape=[1Jy name='labet') name—hnputuimage ' ) 一 shape=C32, 32 , 3 ] , tfäin—ptacehotder ゴ。 ~ tf. placehotder(tf. f10at32 , tf. app.flags'DEF 工 NE—string( ' test-datat; None, ' ! テストデータのパス ! ! ) 。 = = → = = 。。 " チェックポイントを保存する歹イとグトリ " ) ./checkpoints/@, tf. app. f1ags.DEF 工 NE—string( ' checkpoint—dir? 37

6. TensorFlowはじめました : 実践!最新Googleマシンラーニング

0 C 一 V ( bD 1 bD 一 0 FLAGS etf 、 app. ft 目 g 、 FLAGS tf 、 app. flags 、 bEF 工 NE—string('graph_dir's None, ! ! 処理するグラフファイルのあるバスり tf, app.flags. DEF 工 NE=string(' test—data ' ' . /data/test—batch. bin' ーリテストデータのパス , ! ) 一 def eval(graph—file) : # 現在のグラフをリセット tf. reset—defaultzgraph() 'rb') as ft with tEgfiIe.FastGFile(graph—fiIe, graph—def = tf. GraphDef() graph—def. ParseFromString(f 、 d ( ) ) ー tf. import—graph—def(graph-def, :name=j' with tf.SessionCYas sessv image—reader = Ci far1@Reader(FLAGS.test=data) ætrue=coun€h—= 0 for index in range(@/i 10000 ) : image デ image—reader. read (index) 11 0 “ 1 」一 1 true—count 十に np. sum(predictions) =print( '96sy %. 2f を % (graph—file, (true—count / らユ 0000 : 0 ) ) ) 'image—reader ・ ctose() ma 1 n gtob. g10b(FLAGSLgraph-di r + Y*'Pb' ) if _—name— ;file list = 第 3 章データ保存とフィルターの可視化

7. TensorFlowはじめました : 実践!最新Googleマシンラーニング

この行程は Tens 。 rFI 。 w を学ぶ上では必要ありませんが、画像データの操作の練習として試して みてください。 リスト 2.2 : convert_cifarl O_png. py # coding: UTF—8- from future -import absolute—import from future__ importädivision from=—future—」を月mP0「t-~ print—function ぐ 0 ( X LL. ) 一を 1 0 彎 : 1 V 0 —import OS import numpy as= np import; tensorflow as tf from PIL -import lmage from reader import Ci farI@Reader 、 FLAGS• tf,app. f1agsvFLAGS tfJapp. flags. DEF 工 NE—string(? 、 filey; NoneÜ”処理するファイルのパスⅱ ) tf. app. flags. DEFINELinteger(Üoffset' , 0 " 読み飛ばすレコード数 " ) -tf. app. flags. DEF 工 NE-integer('1ength% 1 鮖 = 夛読み込んで変換するレコード数” ) -basename 三 os. path ・ basename(FLAGSJfi1ey patm = OS. path. di name(FLAG4 file) Ci far1öReader(FLAGSJfite) reader print('labett %d 1 .96*mage,IabeIY imageshow = lmage •fromarray(image. byte—array. astype (np. ui れ (8) ) = '96s-96@2d-%d.png'z % {basename, index,- nmage .labet)- fåle n arne file = os ・ path 、 joi n (path 、 ,"te—name) with open(file; mode—'wb' ) as out: -imageshow. save (out,d format= 'png' ) reader. close() 第 2 章 CIFAR-IO の学習と評価 21

8. TensorFlowはじめました : 実践!最新Googleマシンラーニング

sesserun(Ltrain—opototaI—IossJ; loss—vatue feed—dict={ train—placehotder: = zimage. byte—array, tabel—placehotder:•mage. 1目be1 ( 、 1 」 0 C 第 3 3 「 0 assert not np. isnan(toss—value) , 、 =OM0det diverged with ユ .oss = NaN 第 «reader. ctose() prediction = •ceval(sess, -top—k—op, train—ptaceholder, "labetuplacehotder) -print ('epoch- "6d prediction = 96J3f' % (epoch Hduration„ prediction) ) tf.summary. FiIeWriter(FLAGS. checkpoint—di % sess. graph) → pri nt( 'TotaV duration = %d sec ' % total—duration) リスト 2.17 は、オペレーション top ー k ー op を実行する関数です。引数のセッション (sess ) 内で 評価を実行します。 リスト 2.17 : train with_eval.py def —evat(sess,r top 」 k—op, input—image' labet—placeholder) : if not FLAGS.test—data : returnnp. nan -ßmage—reader— Cifar1@Reader(FLAGS.test—data) 土 ru e—c ou n t = 0 ndeßn range くユ 0000 ) image =&iage—reader. read(i ndex) —predictions• sessyrun( [tOP—k—OP] , feed—dict=C → = ー nput—image: image. image, -labet—ptacehotder: image. labet 38 第 2 章 CIFAR-IO の学習と評価

9. TensorFlowはじめました : 実践!最新Googleマシンラーニング

get-tensor-by-name でグラフからオペレーションを取り出すことができます。リスト 3.5 では、 get—tensor—by—name('output/logits:@') を使ってオペレーション logits をグラフから取り 出しています。ここで指定するオペレーション名は、名前 logits だけでなくインデックス @ をつけ る必要があるので注意が必要です。 また、 feed ー dict のキーにオペレーション名を指定すると、指定のオペレーションの出力を置き 換えることができます。プログラムでは、 input-image:@ を指定することで、プレースホルダー input-image に画像データを指定しています。 なお、同じプロセスで複数回 imp 。 rt ー graph ー def を実行しても 2 度目からはグラフが反映されま せん。そのため、リスト 3.5 では、最初に tf. reset_defautt_graph() を実行してグラフをリセッ トしています。 3.2 フィルターの可視化 パラメーターが最適化アルゴリズムによって更新されることはすでに述べました。 こではフィ ルターを可視化することで、学習によってパラメーターが変化していることを確認します。 1 番目の畳み込み層には、 [ 5X5X3 ] の大きさのフィルターが 64 枚あります。これらを画像に変換 を fo 「 fite in#ile—tist: eval(file) coding- リ T ト 8 リスト 3.6 : visualize_weights. py して、フィルターの変化を視覚的に捉えてみましよう。 rom=future_ -ffrom 3future from ——future impo 「 t を OS import absolute—import importu division imporeprint—function importz tensorflow as from P 工 V,import lmage import numpy. as np LAGS•-tf. app.flags. FLAGS tf. app. flags. DEF 工 NE—string('graph—fi1eY, GRID—S 工 ZE WIDTH 8 ー F 工 LTER_COUNT - - 64 Noney 処理するグラフファイをのバス” ) 44 第 3 章データ保存とフィルターの可視化

10. TensorFlowはじめました : 実践!最新Googleマシンラーニング

論 ピし すロて ・ 1 ー一 X まトめ Q.J 一を 1 求工を を差 誤一 解 一を 1 果 9 結 O 1 論し差 推と誤 Q) ま・ 1 ・ 1 ( 0 0 は関 1 - 0 ( し C 数〔狽 C 、 bD ・ 1 一 C 差は正関 1 誤でと 0 数 2 社 一 1 - 数関ト 関失ス 失損リ果 for epoch in range()j FLAGS. epoch + 1 ) : time . time() start—time 10ss—vaIue,Aogits—va1ue sess 、 -run( [train—op, t0taI—10ssÜtogits] , 'feed—df ct={ 一 trai n—ptacehotder; zimagevbytezarrayy* labet piacehotder: ・ image ユ abet assert no む npvisnan(loss value), \ ~ 'ModeUdiverged with tOS$ = cNaNY —ifzindex % 1000 : ゴ 0 : ー print(' [%d] : % 「を % „(imageÄabeIj logits—value)) reader. close() ~ ー。。 tf•summary. FileWriter(FLAGS. checkpoint—di r,sess. graph) CIFAR-IO の学習と評価 34 第 2 章