場景:在遷移學習過程中,利用原有網絡的除全連接層的結構及參數,新增加全連接層訓練自己的分類器
問題描述: 利用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層