0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

model.save()で"TypeError: cannot pickle '_thread.RLock' object"が出た

Posted at

こんにちは。Kerasを使っていて詰まったことがあったので備忘録代わりに投稿します。

エラーの内容

Kerasのモデルをmodel.save("my_model")によって保存しようとしたところ、以下のエラーが出た。

TypeError: cannot pickle '_thread.RLock' object

エラーの原因

私が保存しようとしていたmodelにLambdaレイヤが含まれていたため、pickle化ができないということのようだった。

一つの解決策

model.save("my_model")としたときにはmodelの構造と重みが共に保存されるが、上記の問題によりLambdaレイヤが含まれているモデルの構造は保存できない。そこでmodel.save_weights("my_model.h5")によってまず重みのみを保存する。次にこの重みをどう用いるかだが、モデルの構造を再構築することはコーディングによって可能なはずなので、手動でモデルの構造を書き下し、その後reconstructed_model.load_weights("my_model.h5")とすればよい。

以上です。より良い解決策などあれば教えて下さい。

参考文献
https://deecode.net/?p=975
https://blog.paperspace.com/working-with-the-lambda-layer-in-keras/

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?