Форум программистов, компьютерный форум, киберфорум
Python: Научные вычисления
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/11: Рейтинг темы: голосов - 11, средняя оценка - 5.00
23 / 10 / 1
Регистрация: 08.10.2015
Сообщений: 386

Keras оптимизация

06.02.2019, 10:05. Показов 2109. Ответов 9
Метки c# (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
У меня есть C#-код в котором я вызываю интерпретатор Python и загружаю в него скрипт.
В Python скрипте я создаю модель, загружаю веса, и возвращаю в C#-код результат метода predict.
Скрипт вызывается несколько раз.
Но из-за загрузки весов скрипт выполняется очень медленно.
Можно ли как-то это оптимизировать, например сделать-так, чтобы веса загружались только один раз, и далее выполнялся только метод predict?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.02.2019, 10:05
Ответы с готовыми решениями:

Keras BatchNormalization
Добрый день. во время экспериментов с нейронными сетями решил использовать слой BatchNormalization. Он обучился сохранил сеть всё вроде...

Keras. Машинное обучение
Приветствую, занимаюсь проектом по машинному обучению и задался вопросом... Какой алгоритм обучения нейронных сетей использован при...

Keras тренировочные данные
Доброго времени суток, только начал изучать нейронны сети и взялся за библиотеку Keras. Суть научить нейронку определять среди массива...

9
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
06.02.2019, 11:25
Цитата Сообщение от HitGirl Посмотреть сообщение
чтобы веса загружались только один раз
Если вы один раз загрузили веса в память, то пока приложение не закрыто, они никуда их памяти не исчезнут.
Цитата Сообщение от HitGirl Посмотреть сообщение
есть C#-код в котором я вызываю интерпретатор Python
Вы, вероятно, вызываете не стандартный интерпретатор Python(CPython), а его .NET реализацию IronPython, которая имеет очень мало отношения к CPython, поэтому трудно сказать что вы делаете не так и почему у вас приложение грузит веса каждый заново.
0
23 / 10 / 1
Регистрация: 08.10.2015
Сообщений: 386
06.02.2019, 11:46  [ТС]
Цитата Сообщение от Garry Galler Посмотреть сообщение
Если вы один раз загрузили веса в память, то пока приложение не закрыто, они никуда их памяти не исчезнут.
Нет, скрипт отрабатывает, возвращает результат метода predicat, и процесс закрывается. Каждый раз при создании процесса скрипт выполняется от начала и до конца.
Использую именно CPython.
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
06.02.2019, 12:04
Лучший ответ Сообщение было отмечено HitGirl как решение

Решение

Цитата Сообщение от HitGirl Посмотреть сообщение
скрипт отрабатывает, возвращает результат метода predicat, и процесс закрывается.
А зачем так делать? Если вам нужны результаты работы приложения перманентно, то не завершайте приложение Python.
Найдите способ взаимодействия приложения Python и приложения C#, когда они будут работать одновременно.

Подсказка: такое взаимодействие называется клиент-серверной архитектурой.
Сервер ожидает запроса и генерирует данные, клиент запрашивает и потом обрабатывает. Все довольны и никто не выполняет лишней работы.
1
23 / 10 / 1
Регистрация: 08.10.2015
Сообщений: 386
06.02.2019, 18:13  [ТС]
На стороне сервера есть следующий код:
Python
1
2
3
4
predictions = model.predict(ar)
            int_result = int(np.argmax(predictions[0]))
            result = str(int_result.to_bytes(2, byteorder='big'),'utf8')
            conn.send((result +sep).encode('utf8'))
На стороне клиента я получаю это значение:
Python
1
2
3
resultstr = sock.recv(10).decode('utf8')
index = resultstr.find(sep)
print(int.from_bytes(((resultstr[:index]).decode()), 'big'))
Возникает ошибка: 'str' object has no attribute 'decode'
Подскажите, пожалуйста, как получить отправленное число на стороне клиента?
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
06.02.2019, 18:56
У вас же данные и так декодированы из байтов в resultstr.
Просто извлеките оттуда число по вашему сепаратору и все. Строка с числом превращается в число методом int("123").
0
23 / 10 / 1
Регистрация: 08.10.2015
Сообщений: 386
06.02.2019, 18:58  [ТС]
Python
1
print(int.from_bytes(((resultstr[:index])), 'big'))
Возникает ошибка: cannot convert unicode object to bytes
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
06.02.2019, 19:05
Цитата Сообщение от HitGirl Посмотреть сообщение
from_bytes
Вам зачем это? У вас и так уже строка. Не нужно ее мучить неправильными командами.
0
23 / 10 / 1
Регистрация: 08.10.2015
Сообщений: 386
06.02.2019, 19:11  [ТС]
Python
1
print(int((resultstr[:index])))
ValueError: invalid literal for int() with base 10: '\x00\x00'
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
06.02.2019, 19:56
Вы данные странно закодировали.
Отправляйте число как
Python
1
2
3
>>> result = str(123).encode()
>>> result
b'123'
А обратно
Python
1
2
3
4
5
>>> result.decode()
'123'
>>> int(result.decode())
123
>>>
И все.

Добавлено через 4 минуты
Ну или тогда если используете to_byte, то число при отправке в строку не нужно совать:
Python
1
2
3
4
5
>>> result = (2).to_bytes(4,'big')
>>> result
>>> b'\x00\x00\x00\x02'
>>> int.from_bytes(result,"big")
2
Тогда и извлекается нормально.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.02.2019, 19:56
Помогаю со студенческими работами здесь

Keras. Нейронные сети
Я использую keras для обучения сверточной нейронной сети. Обучаю её распознавать цифры с набора mnist. Распознает в принципе нормально, но...

Как сохранить модель keras?
Доброго времени суток, есть модель keras, при попытке сохранить через pickle вылетает ошибка: TypeError: can't pickle _thread.RLock...

Keras сеть с Dropout не обучается
Здравствуйте. Пытаюсь сконструировать перцептрон с архитектурой 64-96-36-24-8-4 для решения задачи классификации. Как видно из...

Нейронная сеть Keras не тренируется
Уважаемые коллеги, добрый день! Пробую создать простейшую нейронную сеть, которая будет реализовывать XOR. Код ниже не работает...

BatchNormalization до и после нелинейности. Keras
Добрый день! Помогите разобраться, пожалуйста. Как я понимаю, допустимы оба варианта размещения слоя нормализации по мини-батчам: ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru