天天看點

tensorflow.keras與keras:TypeError: objectof type 'xxx' has no len()

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'])
           

當我使用以上代碼構造模型時,運作代碼之後會報以下錯誤:

tensorflow.keras與keras:TypeError: objectof type 'xxx' has no len()

定位發現問題出在這一行:

檢測代碼發現,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
           

繼續閱讀