from tensorflow.keras.layers import Input, Multiply, GlobalAveragePooling1D, Add, Dense, Activation, ZeroPadding1D, \
BatchNormalization, Flatten, Conv1D, AveragePooling1D, MaxPooling1D, GlobalMaxPooling1D, Lambda, UpSampling1D, Reshape
from keras.models import Model, load_model
...
模型构造代码(略)
...
model = Model(inputs=X_input, outputs=X, name='attention_56'
model.summary()
model.compile(loss='categorical_crossentropy', optimizer='adam',
metrics=['accuracy'])
当我使用以上代码构造模型时,运行代码之后会报以下错误:
定位发现问题出在这一行:
model = Model(inputs=X_input, outputs=X, name='attention_56')
检测代码发现,Model是直接从keras中import进来的,而网络层是从tensorflow的keras中import进来的。
from keras.models import Model, load_model
将keras改为tensorflow.keras即可解决,这说明在用到keras的地方,keras的来源应保持一致,以免导致错误。
from tensorflow.keras.models import Model, load_model