由于 'unknown activation_function: LeakyReLU',无法 load_model
Unable to load_model due to 'unknown activation_function: LeakyReLU'
我构建、安装并保存了以下模型:
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers
from tensorflow.keras import preprocessing
from tensorflow.keras.models import Sequential
import config
from tensorflow.keras import applications
model = Sequential()
model.add(layers.Flatten(input_shape=input_shape.shape[1:]))
model.add(layers.Dense(100, activation=keras.layers.LeakyReLU(alpha=0.3)))
model.add(layers.Dropout(0.5))
model.add(layers.Dense(50, activation=keras.layers.LeakyReLU(alpha=0.3)))
model.add(layers.Dropout(0.3))
model.add(layers.Dense(num_classes, activation='softmax'))
我正在使用 load_model 函数进行评估,到目前为止我没有遇到任何问题,但我现在收到以下错误:
ValueError: Unknown activation function: LeakyReLU
我应该对架构进行任何语法更改,还是这里有更深层次的问题?任何建议将不胜感激,因为我已经尝试按照此处所述设置一些自定义对象:https://github.com/BBQuercus/deepBlink/issues/107
编辑:
我在调用 load_model 的文件中的导入如下:
import config
import numpy as np
from tensorflow.keras.preprocessing.image import img_to_array, load_img
from models.create_image_model import make_vgg
import argparse
from tensorflow.keras.models import load_model
import time
from tensorflow import keras
from tensorflow.keras import layers
在使用此类“非标准”激活保存和加载模型时似乎存在一些问题,正如 中所暗示的那样;最安全的方法似乎是使用 LeakyReLU 作为层而不是激活来重写模型:
model = Sequential()
model.add(layers.Flatten(input_shape=input_shape.shape[1:]))
model.add(layers.Dense(100)) # no activation here
model.add(layers.LeakyReLU(alpha=0.3)) # activation layer here instead
model.add(layers.Dropout(0.5))
model.add(layers.Dense(50)) # no activation here
model.add(layers.LeakyReLU(alpha=0.3)) # activation layer here instead
model.add(layers.Dropout(0.3))
model.add(layers.Dense(num_classes, activation='softmax'))
这与您自己的模型完全相同,并且更符合 Keras 的设计选择——无论好坏,它都将 LeakyReLU 作为一个层,而不是标准激活函数。
我构建、安装并保存了以下模型:
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers
from tensorflow.keras import preprocessing
from tensorflow.keras.models import Sequential
import config
from tensorflow.keras import applications
model = Sequential()
model.add(layers.Flatten(input_shape=input_shape.shape[1:]))
model.add(layers.Dense(100, activation=keras.layers.LeakyReLU(alpha=0.3)))
model.add(layers.Dropout(0.5))
model.add(layers.Dense(50, activation=keras.layers.LeakyReLU(alpha=0.3)))
model.add(layers.Dropout(0.3))
model.add(layers.Dense(num_classes, activation='softmax'))
我正在使用 load_model 函数进行评估,到目前为止我没有遇到任何问题,但我现在收到以下错误:
ValueError: Unknown activation function: LeakyReLU
我应该对架构进行任何语法更改,还是这里有更深层次的问题?任何建议将不胜感激,因为我已经尝试按照此处所述设置一些自定义对象:https://github.com/BBQuercus/deepBlink/issues/107
编辑: 我在调用 load_model 的文件中的导入如下:
import config
import numpy as np
from tensorflow.keras.preprocessing.image import img_to_array, load_img
from models.create_image_model import make_vgg
import argparse
from tensorflow.keras.models import load_model
import time
from tensorflow import keras
from tensorflow.keras import layers
在使用此类“非标准”激活保存和加载模型时似乎存在一些问题,正如
model = Sequential()
model.add(layers.Flatten(input_shape=input_shape.shape[1:]))
model.add(layers.Dense(100)) # no activation here
model.add(layers.LeakyReLU(alpha=0.3)) # activation layer here instead
model.add(layers.Dropout(0.5))
model.add(layers.Dense(50)) # no activation here
model.add(layers.LeakyReLU(alpha=0.3)) # activation layer here instead
model.add(layers.Dropout(0.3))
model.add(layers.Dense(num_classes, activation='softmax'))
这与您自己的模型完全相同,并且更符合 Keras 的设计选择——无论好坏,它都将 LeakyReLU 作为一个层,而不是标准激活函数。