TensorFlow2を触ってみる posted at 3月 21, 2020 しょっぱなから補完が効かないとかハマったわけですが、TensorFlowを触り始めました。 過去に使っていたことがあるのですが、1.0より前のころだったので、kerasとかeagerとか戸惑いまくりです。 そんなわけで、しばらくは昔の記憶でTensorFlowを触って試行錯誤したり、VSCodeの設定をいじったり、といったメモ書きが続くと思います。 コメント
TensorFlow2:TensorBoardのグラフがうまく表示されず困った件(余談) posted at 4月 09, 2020 前回の記事 のおまけ。 余談と言いつつ、重要そうなことも入っている気がする。 余談:モデルがmain graphに表示されない件 TensorBoardでは、グラフが複雑になるのを避けるため、入出力が多いノード(原文では"high-degree nodes")は、 Auxiliary Nodes 側に配置される。 "入出力が多いノードは、だいたい保存とかそんな感じのノードなので、外しても問題ないっしょ。メイングラフには〇も置いとくし"(超意訳)らしい。モデルなんだがなぁ…。 Reference: TensorBoard: Graph Visualization グラフを見ていると、レイヤ内の各weightの定義が、ただのVariableではなく、ReadVariableOpになっていることが原因のようだ。 しかしweightの定義はkeras内でやっているので、手が出せない。 調べてみると、issueが上がっていたが解決していない(放置されている?)。 [TF 2.0] Inconvenient graph visualization #29215 この件は、今のところ手動でmain graphに移動させることで回避。 余談:test側のグラフ出力がエラーになる 前回の変更2では @tf.function を付与する関数をtrainのみにして対処したが、testのみにした場合はうまく動かない。 この場合、最初と同じで Graph visualization failed. Error: Malformed GraphDef. が表示されてしまう。 TensorBoardのコンソールには以下のエラーが表示される。 ValueError: Cannot combine GraphDefs because nodes share a name but contents are different: images よく見てみると、今度は入力である images がエラーの原因となっている。 いやいやテスト中はループでぐるぐる回してるだけで、処理は変わってないし! とりあえず本筋でないから放置するか。。。 と思ってぼーっとコード見ていたら、なんとなくバッチが気になってきた。 結果、データ読み込みの部分を... 続きを読む
TensorFlow2.1+VSCodeで補完が効かない件 posted at 3月 15, 2020 関数入力中のポップアップでドキュメントが表示されたりする機能も効かない。 暗記するほど使い込んでないのでAPIリファレンスを都度見に行くのも大変だし、困った。 とりあえず解決できたのでメモ。 調べた内容 調べたところ、以下のような回避が出ているが、あまり環境をいじりたくない。 https://qiita.com/artemis5656/items/e8e464510a7d907e1feb もう少し調べたところ、tensorflowのissueは2月末にfixedになっていた。 https://github.com/tensorflow/tensorflow/issues/32982 VSCode側のissueも、TensorFlow側で修正済みになっている。 https://github.com/microsoft/python-language-server/issues/818 3/11に、TensorFlow2.2のrc0が出たので試してみる。 無事動きました。(windows10+VSCode1.43.0+Python3.7+TensorFlow2.2.0rc0) まとめ 本件はTensorFlow側のbugで、TensorFlow2.2で修正される予定。 rc0でも修正されているので、issueに注意して使うのもあり。 正式版までひと月くらいかかるかもなので、breaking-changesに注意しながらrc0で書いて2.1に持ってくのもありか。 rc版はpre-release扱いなので、インストールするときは以下のようにバージョンを指定する必要がある。 –upgrade オプションは適当に。 pip install tensorflow==2.2.0rc0 よかった。 続きを読む
TensorFlow2:同一スクリプト内で複数回の学習を回す posted at 4月 05, 2020 パラメータを振った複数の学習を、一気に流したいときにどうするかという話。 エラー落ちする対策をやってみたが、最後に紹介するやり方が素直な気がする。 実行するモデル 今回使うモデルはこちら。weight decayをパラメータでとるようにしている。 import tensorflow as tf # asign aliases tfk = tf.keras tfkl = tf.keras.layers class MyModel2(tfk.Model): def __init__(self, wd=0.001): # add `weight decay` parameter. super(MyModel2, self).__init__() self.conv1 = tfkl.Conv2D(32, 3, padding="same", activation="relu", use_bias=True, kernel_regularizer=tfk.regularizers.l2(wd), name="conv1") self.pool1 = tfkl.MaxPool2D(name="pool1") self.conv2 = tfkl.Conv2D(64, 3, padding="same", activation="relu", use_bias=True, kernel_regularizer=tfk.regularizers.l2(wd), name="conv2") self.pool2 = tfkl.MaxPool2D(name="pool2") self.flatten = tfkl.Flatten() self.d... 続きを読む
コメント
コメントを投稿