Используйте весло для предварительной подготовки модели на Raspberry Pi.

машинное обучение

Raspberry Pi установить paddlelite; Установите paddlehub на компьютер x86 и преобразуйте предварительно обученную модель в paddlehub в формат paddlelite, чтобы она могла работать на Raspberry Pi.

Скомпилируйте и установите Raspberry Pi paddlelite

sudo apt install patchelf cmake
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 150

git clone https://github.com/PaddlePaddle/Paddle-Lite.git
cd Paddle-Lite
sudo ./lite/tools/build.sh \
  --build_extra=ON \
  --arm_os=armlinux \
  --arm_abi=armv7hf \
  --arm_lang=gcc \
  --build_python=ON \
  full_publish

cd build.lite.armlinux.armv7hf.gcc/inference_lite_lib.armlinux.armv7hf/python/install
sudo python3 setup.py install

Для описания параметров конкретной компиляции исходного кода вы можете обратиться к:весло paddle.GitHub.IO/paddle-lite…

Преобразование предварительно обученной модели paddlehub в формат paddlelite на компьютере x86

Установите лопастную ступицу, лопастной гребной винт

python -m pip install paddlehub
python -m pip install paddlepaddle

Протестируйте предварительно обученную модель лопастной ступицы

import paddlehub as hub

senta = hub.Module(name="senta_gru")
test_text = ["这家餐厅很好吃", "这部电影真的很差劲"]

results = senta.sentiment_classify(texts=test_text, use_gpu=False, batch_size=1)

for result in results:
    print(result['text'])
    print(result['sentiment_label'])
    print(result['sentiment_key'])
    print(result['positive_probs'])
    print(result['negative_probs'])

Загрузить инструмент преобразования оптов

весло paddle.GitHub.IO/paddle-lite…

Загрузите предварительно обученную модель paddlehub и конвертируйте

Загрузите архив с предварительно обученной моделью:

hub download senta_gru

Разархивируйте его и поместите в папку save_models/senta_gru,

Модель преобразования:

./opt --model_dir=senta_gru/infer_model --valid_targets=arm --optimize_out_type=naive_buffer --optimize_out=saved_models/senta_gru

PS: просмотрите операторы модели, поддерживаемые инструментом преобразования opt:

./opt --print_model_ops=true --valid_targets=arm --model_dir=senta_gru/infer_model

Протестируйте преобразованную предварительно обученную модель на Raspberry Pi.

from paddlelite.lite import *

config = MobileConfig()
config.set_model_dir("model")

# (2) 创建predictor
predictor = create_paddle_predictor(config)
'''
......
'''

Затем возникает ошибка сегментации. . .


постскриптум

После этого я начал искать разные причины, и я тоже думал, что это может быть вызвано отсутствием конвертации. . .

Я тоже неоднократно искал информацию, но так как весло пока не стабильно, даже демка на официальном сайте устарела, а интерфейс изменился и исчез. . .

Так что в итоге пришлось временно сдаться.

Возможно, paddlepaddle и paddlehub, как основная сила платформы Baidu paddle, имеют высокую скорость итерации и хорошую степень завершенности, которые относительно пригодны для использования. Но другие компоненты могут иметь более низкий приоритет, а документы не синхронизируются, что действительно доставило много хлопот.

В конце концов, это уже заняло целый день, и мне все еще нужно время, чтобы изучить систему рекомендаций и завершить мой проект прогнозирования акций, поэтому проект paddlelite может только ждать, пока весло Baidu стабилизируется, прежде чем запускать его.

file