Невозможно загрузить модель Keras на Pi - PullRequest
0 голосов
/ 30 марта 2020

Я обучил модель на своем ноутбуке, но когда я пытаюсь загрузить ее на свой Raspberry Pi 3, я получаю эту ошибку:

Segmentation fault (core dumped)

Как видно из кода ниже модели размер очень маленький, поэтому он легко помещается в памяти.

from keras.models import Sequential
from keras.layers import Conv2D, MaxPooling2D, Lambda, Dense, Dropout, Flatten
from keras.backend.tensorflow_backend import clip


class Architecture(object):

    def __init__(self, input_shape):
        model = Sequential()
        model.add(Conv2D(32, kernel_size=(3, 3), activation='relu', input_shape=input_shape))
        model.add(Conv2D(32, (3, 3), activation='relu'))
        model.add(MaxPooling2D(pool_size=(2, 2)))
        model.add(Dropout(0.25))
        model.add(Flatten())
        model.add(Dense(128, activation='relu'))
        model.add(Dropout(0.5))
        model.add(Dense(128, activation='relu'))
        model.add(Dense(1, activation='linear'))
        model.add(Lambda(lambda x: clip(x, min_value=-1.0, max_value=1.0)))
        self.model = model

    def to_model(self):
        self.model.compile(loss='mse', optimizer='adam', metrics=['mse', 'mae'])
        return self.model

Я загружаю модель с этим кодом. Этот же точный код работает на моем ноутбуке без ошибок.

from tensorflow.keras.models import load_model
from keras.backend.tensorflow_backend import clip

loaded_model = load_model(
    'path/to/model.hdf5',
    custom_objects={'clip': clip}
)

На моем ноутбуке и Pi установлена ​​версия Tensorflow 1.14. Я начинаю думать, что проблема может быть из-за custom_objects, определенного в лямбда-слое. Может быть, он использует 64-битную структуру данных, которая не совместима с 32-битной архитектурой Pi? Проблема в том, что я даже не знаю, как бы подтвердить гипотезу. Сообщение об ошибке не содержит никаких других деталей.

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