#1.はじめに
Google colabでStyelegan2を使ったコードを久しぶりに動かそうとしたら、エラーが発生しました。コードを書いたのは2020.8で、その当時は問題なく動作したのに、急に動かなくなったわけです。解決に結構時間が掛かったのでメモとして残します。
#2.エラーの内容
エラーは、モデルをコンパイルしてstylegan2の学習済みパラメータを読み込むときに発生します(下記ログ参照)。
......
Loading networks from "gdrive:networks/stylegan2-ffhq-config-f.pkl"...
Downloading https://nvlabs-fi-cdn.nvidia.com/stylegan2/networks/stylegan2-ffhq-config-f.pkl ... done
Setting up TensorFlow plugin "fused_bias_act.cu": Preprocessing... Compiling... Loading... Failed!
......
最終的なエラーメッセージは、下記の様です。
tensorflow.python.framework.errors_impl.NotFoundError: /content/stylegan2/dnnlib/tflib/_cudacache/fused_bias_act_0f493ee56b0c2b4e01bd31e17dbfca83.so: undefined symbol: _ZN10tensorflow12OpDefBuilder5InputESs
何これ? fused_bias_act_0f493ee56b0c2b4e01bd31e17dbfca83.so がない? 未定義のシンボル:_ZN10tensorflow12OpDefBuilder5InputESs って何さ?
色々ググってみると Tensorflowとcudaのバージョンが合わない時に発生するようなことが書いてあったりしたので、色々いじってみましたが全然ダメでした。
#3.解決策
問題は、TensorflowとKerasを指定バージョンでインストールしていたことでした(下記参照)。でも 2020.8時点は、これじゃないと上手く動かなかったんだけど。。。。
!pip install tensorflow==1.14
!pip install tensorflow-gpu==1.14
!pip install keras==2.0.8
これを、下記の様に変更したら、エラーが嘘の様に消えました。
%tensorflow_version 1.x
お悩みのことがもしいらっしゃれば、参考にどうぞ。