Как открыть историю модели после ее протравливания, когда модель имеет собственный слой - PullRequest
0 голосов
/ 28 октября 2019

Я запустил несколько моделей глубокого обучения в Керасе, сохранив history процесса подбора модели в виде файла выбора для черчения с помощью matplotlib.

history=model.fit_generator(...)
with open('history_'+name+'_.pickle', 'wb') as handle:
    pickle.dump(history, handle, protocol=pickle.HIGHEST_PROTOCOL)

Однако при попытке открытьфайл рассола

with open (history_file_name,'rb') as f: 
    history=pickle.load(f)

Я получил следующую ошибку:

ValueError: Unknown layer: ScoreNormalizationLayer 

Я скопировал класс ScoreNormalizationLayer в сценарий, в котором я открываю попытку открыть засоленный history

class ScoreNormalizationLayer(Layer):   
    def __init__(self, **kwargs):
        super(ScoreNormalizationLayer, self).__init__(**kwargs)

    def build(self, input_shape):
        super(ScoreNormalizationLayer, self).build(input_shape) 

    def call(self, x):
        max_val=K.max(x,axis=2,keepdims=True)   #[0 - seq num; 1 - step in seq; 2 - onehot result]
        max_val=K.pow(max_val,-1)

        answer=max_val*x

        return (answer)

    def compute_output_shape(self, input_shape):
        return (input_shape)    

Но я все еще получил ту же ошибку - как будто он не знает, как связать класс с маринованной историей.

Есть ли способ загрузить эти маринованные файлы? Я бы очень предпочел способ, который бы работал с существующими файлами перебора, а не один, который потребовал бы переобучения моделей и перебора данных другим способом, чтобы сэкономить все время переобучения.

...