首页 > 解决方案 > Tensorflow,Keras:“模型”对象没有属性“_get_distribution_strategy”

问题描述

我正在尝试使用 CNN 运行视频分类代码,但是在训练模型时,出现此错误:

文件“C:\Users[我的名字]\anaconda3\envs\tensorflow\lib\site-packages\tensorflow_core\python\keras\callbacks.py”,第 1532 行,在 set_model self.log_dir,self.model._get_distribution_strategy() ) # pylint: disable=protected-access AttributeError: 'Model' object has no attribute '_get_distribution_strategy'

据我了解,这是直接链接到库 keras 的错误。有人知道是否有办法解决它,或者是否有以前版本的 keras,其中 'model' 对象具有属性 '_get_distribution_strategy' ?我在最近几天尝试运行的许多类似代码中都看到了这个错误,所以我不敢相信我是唯一一个遇到这个问题的人。

谢谢大家的帮助。

(编辑 :

这是错误似乎来自的函数 train_model :

def train_model(model, nb_epoch, generators, callbacks=[]):
    train_generator, validation_generator = generators
    model.fit_generator(
        train_generator,
        steps_per_epoch=100,
        validation_data=validation_generator,
        validation_steps=10,
        epochs=nb_epoch,
        callbacks=callbacks)
    return model

这是进口的:

from keras.applications.inception_v3 import InceptionV3
from keras.optimizers import SGD
from keras.preprocessing.image import ImageDataGenerator
from keras.models import Model
from keras.layers import Dense, GlobalAveragePooling2D
from keras.callbacks import ModelCheckpoint, TensorBoard, EarlyStopping

)

标签: pythontensorflowkeras

解决方案


问题来自使用不兼容的tensorflow和版本keras。尝试将所有导入更改from kerasfrom tensorflow.keras

from tensorflow.keras.applications.inception_v3 import InceptionV3
from tensorflow.keras.optimizers import SGD
from tensorflow.keras.preprocessing.image import ImageDataGenerator
from tensorflow.keras.models import Model
from tensorflow.keras.layers import Dense, GlobalAveragePooling2D
from tensorflow.keras.callbacks import ModelCheckpoint, TensorBoard, EarlyStopping

如果它不起作用,请尝试卸载 keras 并在答案中使用相同的导入。


推荐阅读