「Only instances of `keras.Layer`~」の解決方法・続

製作 プログラム

最終更新日:2025/03/19

ラムネグから一言:寝る前に読むとくだらなすぎて逆に寝れると好評なすごい適当なブログをこっちではじめてます.

昨日も同じ問題の解決方法を書いたんですが、あれだと今度は「import matplotlib.pylab as plt」の部分でエラーが…。という事で再度、「Only instances of `keras.Layer` can be added to a Sequential model.~」の解決方法を。

今回のやり方だときちんとチュートリアル最後まで実行できました。めでたしめでたし。

下記はcolabの公式チュートリアル「画像分類器を再トレーニングする」の場合の解決手順について書いてますが、ほかの環境でも同じく参考にできるはずです。

解決方法

原因は後から書くとして、やり方からまず書きますね。

チュートリアルの先頭2行のコード「import itertools」と「import os」を消して下記をコピペ

!pip install tf-keras~=2.16
import itertools
import os
os.environ["TF_USE_LEGACY_KERAS"] = "1"

でオッケー!

原因とコピペでやってることの説明

あの後もう少し英語書かれたバグ報告を読んでると、どうも最新バージョン(ver2.16~)の「tensorflow」は「keras3」に対応してるんだれど、「keras.Sequential()」はなぜか「keras3」に対応してなく「keras2」しか対応してないからエラーが出てる、らしいです。

なんか知らないですが「Sequential」と「keras3」っていう組み合わせが今回エラーが出た原因、と。ふーむ。

で、解決方法の数行のコピペでやってるのが、まず「!pip install tf-keras~=2.16」でkeras2をインストール。

でもこれだけだと最初から同梱されてるkeras3を使っちゃうんで、「os.environ["TF_USE_LEGACY_KERAS"]~」で環境変数を宣言し、今インストールしたkeras2の方使ってね!って指示してる感じです。

「TF_USE_LEGACY_KERAS」っていう環境変数を「tensorflow」はデフォルトで見るようになってて、その値によってどのkerasを使うか内部で判定してる…ってコトなんでしょう。

ちなみに

またkeras2のマイナーバージョン?(16の部分)ですが、これは使ってるtensorflowのバージョンと合わせるのがいいらしいです。

今回初期からcolabに入ってるtensorflowのバージョンが「2.16」だったんでkeras2の方も「16」にしてます。

まとめ

colabのtensorflow公式チュートリアルをそのまま実行しただけなのに出てきちゃうエラー「Only instances of `keras.Layer` can be added to a Sequential model.~」の解決方法を書きました。

keras3じゃなくてkeras2を使うようにすることでなんとかチュートリアル最後までやり遂げることができました。あー、とりあえずよかった。

【おしらせ、というか完全なる宣伝】

文体がもうぜんぜん適当すぎてあれだけどものすごい自由に書いてるブログ「檸檬だくだく」もよろしく.寝る前に読める恐ろしくくだらないやつです.

こんなにも一ミリも目を引かれないタイトルを取り扱ってます: ココア20g / ハイチュウとかってさ / なぜ米と小麦を食べようと思ったのかの謎 /