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

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

06.02.2019, 10:05. Показов 2125. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru