keras 報錯:TypeError: The added layer must be an instance of class Layer

場景:在遷移學習過程中,利用原有網絡的除全連接層的結構及參數,新增加全連接層訓練自己的分類器

問題描述: 利用keras的Sequential堆疊layer時出現了TypeError: The added layer must be an instance of class Layer

解決方案: 檢查keras的導入,如果出現使用tensorflow.python.keras方式引用和keras引用混合就會出現這個問題。
統一使用:

from tensorflow.python.keras.datasets import mnist
from tensorflow.python.keras.layers.core import Dense, Dropout, Activation, Flatten
from tensorflow.python.keras.models import Sequential
from tensorflow.python.keras.utils import np_utils

或者使用這個:

from keras.datasets import mnist
from keras.layers.core import Dense, Dropout, Activation, Flatten
from keras.models import Sequential
from keras.utils import np_utils

總結:使用keras遷移學習或者利用keras的預訓練網絡等過程中,出現keras和tensorflow都使用的情況,最好使用tensorflow裏面內嵌的keras.使用過程中一定要保證引用同一個keras層

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章