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层

猜你喜欢

转载自blog.csdn.net/wuzhongqiang/article/details/105699316