Keras ValueError пытается загрузить модель - PullRequest
0 голосов
/ 29 мая 2020

Я использую Anaconda Navigator, уточняю, Jupyter.

import tensorflow as tf 
from tensorflow import keras
print(tf.__version__)
>>> 1.14.0

Это моя модель

def create_model():
  model = tf.keras.Sequential([
    keras.layers.Dense(86, activation='relu', kernel_regularizer=keras.regularizers.l2(0.0001),input_shape=(129,)),
    keras.layers.Dropout(0.2),
    keras.layers.Dense(142, activation='relu', kernel_regularizer=keras.regularizers.l2(0.0001)),
    keras.layers.Dropout(0.2),
    keras.layers.Dense(4, activation='softmax')
    ])
  return model

model = create_model()

# Display the model's architecture
model.summary()

После обучения, прогнозирования и оценки моей модели я решил сохранить ее используя

model.save('/Users/Jennifer/myproject/my_model.h5') 

, я проверил каталог и папку с файлом h5py. И я решил загрузить его с помощью

new_model1 = tf.keras.models.load_model('/Users/Jennifer/myproject/my_model.h5')

Получил ошибку

ValueError: Unknown entries in loss dictionary: ['class_name', 'config']. Only expected following keys: ['dense_17']

Пожалуйста, помогите мне. Что я должен делать? Я почти целый день пытался решить эту проблему. Спасибо

1 Ответ

0 голосов
/ 29 мая 2020

Вот небольшая работа, которая просто загружает веса:

#!/usr/bin/env python3

from tensorflow import keras
import os


def create_model():
  model = keras.Sequential([
    keras.layers.Dense(86, activation='relu', kernel_regularizer=keras.regularizers.l2(0.0001),input_shape=(129,)),
    keras.layers.Dropout(0.2),
    keras.layers.Dense(142, activation='relu', kernel_regularizer=keras.regularizers.l2(0.0001)),
    keras.layers.Dropout(0.2),
    keras.layers.Dense(4, activation='softmax')
    ])
  return model

if os.path.exists("junk.h5"):
    model = create_model()
    model.load_weights("junk.h5")

else:
    model = create_model()
    model.compile(optimizer=keras.optimizers.Adam(0.0001), loss=keras.losses.CategoricalCrossentropy(from_logits=True), metrics=['accuracy'])
    model.save("junk.h5")

Другой обходной путь - сохранить модель без оптимизатора

model.save("junk.h5", include_optimizer=False)

Похоже, Функция потерь, которую вы используете, создает словарь с недопустимыми ключами. Это похоже на ошибку в keras / tensorflow. Вот почему colab, вероятно, сработал, потому что использовала более новую версию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...