Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Anaconda 我能';t加载我的nn模型,我';我训练并拯救了他们_Anaconda_Google Colaboratory_Tf.keras - Fatal编程技术网

Anaconda 我能';t加载我的nn模型,我';我训练并拯救了他们

Anaconda 我能';t加载我的nn模型,我';我训练并拯救了他们,anaconda,google-colaboratory,tf.keras,Anaconda,Google Colaboratory,Tf.keras,我使用迁移学习来训练模型。基本模型是efficientNet。 你可以阅读更多关于它的内容 激活函数 类开关激活(激活): 模型定义 将2个完全连接的层添加到B0。 我使用以下方法保存它: model.save('model.h5')) 尝试加载时出现以下错误: model=tf.keras.models.load_model('model.h5')) -----------------------------------------------------------------------

我使用迁移学习来训练模型。基本模型是
efficientNet
。 你可以阅读更多关于它的内容

激活函数 类开关激活(激活):

模型定义 将2个完全连接的层添加到B0。 我使用以下方法保存它:

model.save('model.h5'))
尝试加载时出现以下错误:

model=tf.keras.models.load_model('model.h5'))
---------------------------------------------------------------------------
ValueError回溯(最近一次调用上次)
在()
1#重新创建完全相同的模型,包括其权重和优化器
---->2 model=tf.keras.models.load_model('PhoneDetection-CNN_29_July.h5'))
3.
4#展示模型架构
5.范本摘要()
10帧
/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/utils/generic_utils.py类中的usr/local/lib/python3.6/dist-packages
319 cls=获取注册对象(类名称、自定义对象、模块对象)
320如果cls为无:
-->321提升值错误('Unknown'+可打印模块名称+':'+类名称)
322
323 cls_config=config['config']
ValueError:未知层:FixedDropout
```蟒蛇

我试图通过加载保存的模型进行推断时,遇到了相同的错误。 然后我也在推理笔记本中导入了
efficientnet
库,错误消失了。 我的导入命令如下所示:

import efficientnet.keras as efn

(请注意,如果您尚未安装efficientnet(这不太可能),可以使用
!pip install efficientnet
命令进行安装。)

我在最近的型号上也遇到了同样的问题。研究源代码可以找到类。我通过导入后端和层将其添加到推理代码中。该比率还应与您的efficientnet模型中的比率相匹配,因此对于该模型,该比率为.2(其他则不同)


您需要通过
自定义对象
参数告诉
load\u model
在哪里可以找到
fixedropout
。我在培训后使用model.get\u config,它给了我一个模型配置的长字典,然后我将配置保存在pickle文件中。之后,我将其用于自定义_对象,但它给出了相同的错误。您能分享创建模型的代码吗?这里应该有一个对
FixedDropout
的引用。您需要传入
custom_objects={“fixedropout”:fixedropout}
I提供了用于创建模型和定制激活fcn的代码。正如您所建议的@jakub,我使用了
custom_objects={“fixedropout”:fixedropout}
,但它给出了:
NameError:name“fixedropout”未定义
。如果您查看我最初在帖子中提到的链接,您会注意到FixedDropout在模型的结构中使用了9次。@AliBesharati您找到过解决方案吗?我也有同样的问题!
def __init__(self, activation, **kwargs):
    super(SwishActivation, self).__init__(activation, **kwargs)
    self.__name__ = 'swish_act'

def swish_act(x, beta = 1):
    return (x * sigmoid(beta * x))

from keras.utils.generic_utils import get_custom_objects
from keras.layers import Activation
get_custom_objects().update({'swish_act': SwishActivation(swish_act)})
model = enet.EfficientNetB0(include_top=False, input_shape=(150,50,3), pooling='avg', weights='imagenet')
x = model.output

x = BatchNormalization()(x)
x = Dropout(0.7)(x)

x = Dense(512)(x)
x = BatchNormalization()(x)
x = Activation(swish_act)(x)
x = Dropout(0.5)(x)

x = Dense(128)(x)
x = BatchNormalization()(x)
x = Activation(swish_act)(x)

x = Dense(64)(x)

x = Dense(32)(x)

x = Dense(16)(x)

# Output layer
predictions = Dense(1, activation="sigmoid")(x)

model_final = Model(inputs = model.input, outputs = predictions)

model_final.summary()
import efficientnet.keras as efn
from tensorflow.keras import backend, layers
class FixedDropout(layers.Dropout):
        def _get_noise_shape(self, inputs):
            if self.noise_shape is None:
                return self.noise_shape

            symbolic_shape = backend.shape(inputs)
            noise_shape = [symbolic_shape[axis] if shape is None else shape
                           for axis, shape in enumerate(self.noise_shape)]
            return tuple(noise_shape)
model = keras.models.load_model('model.h5', custom_objects={'FixedDropout':FixedDropout(rate=0.2)})