Должны ли предварительно подготовленные модели tensorflow использоваться машинами с одинаковыми версиями?

#python #python-3.x #tensorflow #raspberry-pi

#python #python-3.x #tensorflow #raspberry-pi

Вопрос:

Я обучил cnn на машине Linux с keras / tensorflow, но не могу запустить предварительно подготовленную модель на моем Raspberry Pi. Модель была создана на Ubuntu 16.04 с Python 3.6.7, tensorflow версии 1.7.0, cuDNN 7.0.5 и CUDA 9. Я пытаюсь запустить ее на Raspberry Pi 3 Model B с Python 3.5.3 и tensorflow версии 1.13.1.

У меня нет проблем с загрузкой и запуском предварительно подготовленной модели на том же компьютере, на котором она была создана. Проблема возникает только тогда, когда я пытаюсь запустить ту же самую предварительно подготовленную модель в системе RPi. В итоге я получаю ошибку сегментации.

Я попытался обновить компьютер Linux, на котором была создана модель, до tensorflow 1.12, но после успешной установки tensorflow 1.12 я получил сообщение «Не удалось получить алгоритм свертки. Вероятно, это связано с тем, что cuDNN не удалось инициализировать «ошибки, поэтому я бы предпочел не идти по этому пути. Я хочу знать, возможно ли просто использовать эту предварительно подготовленную модель с tensorflow 1.13.1 в RPi.

Вот что я делаю с RPi:

 >>> import tensorflow as tf

/usr/lib/python3.5/importlib/_bootstrap.py:222: RuntimeWarning: compiletime version 3.4 of module 'tensorflow.python.framework.fast_tensor_util' does not match runtime version 3.5
  return f(*args, **kwds)
/usr/lib/python3.5/importlib/_bootstrap.py:222: RuntimeWarning: builtins.type size changed, may indicate binary incompatibility. Expected 432, got 412

>>> print(tf.__version__)
1.13.1

>>> from keras.models import load_model
Using TensorFlow backend.

>>> model = load_model(save_dir model_name)
WARNING:tensorflow:From /home/pi/.local/lib/python3.5/site-packages/tensorflow/python/framework/op_def_library.py:263: colocate_with (from tensorflow.python.framework.ops) is deprecated and will be removed in a future version.
Instructions for updating:
Colocations handled automatically by placer.
WARNING:tensorflow:From /home/pi/.local/lib/python3.5/site-packages/keras/backend/tensorflow_backend.py:3445: calling dropout (from tensorflow.python.ops.nn_ops) with keep_prob is deprecated and will be removed in a future version.
Instructions for updating:
Please use `rate` instead of `keep_prob`. Rate should be set to `rate = 1 - keep_prob`.
2019-03-25 17:08:11.471364: W tensorflow/core/framework/allocator.cc:124] Allocation of 209715200 exceeds 10% of system memory.
2019-03-25 17:12:55.123877: W tensorflow/core/framework/allocator.cc:124] Allocation of 209715200 exceeds 10% of system memory.
Backend terminated (returncode: -11)
Fatal Python error: Segmentation fault
  

Мне нужны некоторые указания о том, происходит ли это — несовместимы ли версии? Возможно, модель слишком велика для RPi (сомневаюсь — это довольно мелкая модель с 18 слоями)? Другие сообщения на форуме, которые я видел с ошибками сегментации, казались намного более ужасными (например, они даже не могут писать стандартные команды в терминале, не видя ошибки сегментации) — эта ошибка сегментации возникает только (и повторяется) с помощью вышеупомянутого командования.

Любой совет / помощь с благодарностью!