AI

Tensorflow 1と2のModel混在のときに目からうろこだった話

そもそも

1年半くらい前はTensorflow 1ベースで推定器開発をしていた人も多いはず。

グッディーもTF 1.12で開発した3つの推定器を組み合わせて上位のinferenceを行ってました。結構大規模だったのに30 fps出て、書きにくいけど速いなTensorflowとか思ってました。

それから1年がたち、UKの大学から出たTensorflow 2ベースの検出器でいいのが出てきたので、さらにこれを組み合わせてみようとしたときの話し。

移行という先入観

これからはTensorflow 2だよな… ということで、1年前のinference systemを全面的にTF 2.2に移行し、そこにUKの技術を組み合わせて、何とか通しで動作はするようになったものの、なんか遅い。20 fps出ない。でもまあinferenceはできているからいずれtuningすればいいかくらいに思っていたが…

急遽お披露目しないといけなくなり、仕方ないからUKの技術をTF 1.12に巻き戻そうとするも、tf.kerasで作ったモデルをKerasには喰わせられない。再学習だけは避けたいので何とかならないかといろいろ頑張ってみる。

jsonにsaveしたmodelとhdf5にsaveしたweightをloadすることはなぜかできて、一瞬喜ぶも挙動がおかしい。中間Layerの出力を別のmoduleに喰わせたりしているせいもあるのだろうけど、どうもlayer関連で互換がない模様。

混在への目覚め

もちろんTensorflow 1と2は混在できません。やりたかったことはKerasとtf.kerasの混在、TF 1.15あたりでできるんじゃね、と思い立ちやってみたところ、さくっと動きました。しかもさらに大規模になったのに29 fpsとか出てるし。まさに目からうろこでした。

もしかしてTF 2.2でKerasとtf.kerasを混在させてもいけるんじゃないかと安易にコードをコピペしてみたけど、Placeholderないよとかいろいろerrorが出てきたのですぐやめた。できても29フレ出ないかもだし。

しかし

Tensorflow 2はなぜこんなふうになってしまったのか。v1.compat使ってるからいけないのかも知れないけど、これを機にPytorchに乗り換えてみようかと。昔Chainer使ってたし。パフォーマンス出なかったらまた戻ってくるかも知れないけど、GoogleからFacebook (今はMeta) にちょっと乗り換えてみよ。


   
関連記事
  • PyTorchでclass_weightを適用するには
  • numpy.reshapeは気をつけて使おう !
  • kernel_initializerって学習の収束に大事かも

    コメントを残す

    *

    CAPTCHA