Я уверен, что каждый, кто изучает нейронные сети / глубокое обучение, сталкивается с большой проблемой: как настроить эти гиперпараметры. Это сложная часть. Настройка этих параметров требует много усилий и времени. К счастью, у нас есть такие пакеты, как Hyperopt или Hyperas. Сегодня я немного расскажу о Hyperas с моим проектом. Я расскажу о проблемах, с которыми я столкнулся, и о решениях. Если вы не знакомы с Hyperas, перейдите на Github: https://github.com/maxpumperla/hyperas
Проект состоит в том, чтобы обнаружить сходство двух китайских предложений. Я использую LSTM для построения модели и хочу настроить гиперпараметры. Конечно, об этом есть несколько постов и примеров. Но у меня есть несколько уникальных проблем:
- Язык ввода - китайский. Я не был уверен, может ли Hyperas работать с другими языками;
- Входов для нейронной сети несколько, а не один.
- Я использую среду Google Colaboratory и Python 3.
Я поискал в Интернете и нашел эту статью (http://blog.munhou.com/yong-hyperas-diao-xiao-keras-can-shu/) очень похожей на мой проект. Три дня пробовал несколько способов. Вот мои окончательные решения, и я прохожу их шаг за шагом.
- Первый код (из _future_ import print_function) должен быть в ТОПе всего кодирования, включая эти нерелевантные коды.
2. Определите данные функции ().
Вот несколько советов:
A. Пожалуйста, импортируйте пакеты в functions. В противном случае он сообщит вам, что пакет или функция из пакета не определены.
B. Обработайте данные в функции данных. Перед функцией данных не должно быть никаких кодов.
C. Реализуйте чистые строки или специальные символы из файла. В моих текстах есть китайские иероглифы и специальные символы, такие как «»? 、! 。. Эти символы не существуют в английском языке. Поэтому, если вы очистите строки в функциях данных с помощью Hyperas, это даст вам ошибку «SyntaxError: EOL while scanning string literal
». Мое решение - использовать другой файл для предварительной обработки этих текстов.
Итак, я записал очищенные данные и импортировал их в файл с помощью Hyperas. Я пытался вызвать функции, но это не удалось. Может быть, вы, ребята, сможете найти другие более простые способы справиться с этим.
3. Определите вашу модель. Назначьте входы в этой модели функции. Вы можете изменить любые гиперпараметры с помощью {{choice ([X, X, X])}}. Concatenate () вообще не влияет на Hyperas. Это будет то же самое, что и Sequential ().
4. Составьте основную функцию. Эти пакеты в функции тоже нужно определить. В противном случае будет отображаться сообщение об ошибке Имя XXX не определено. Еще одно место, на которое следует обратить внимание, - это notebook_name. Гипера уже упоминала: Если вы обнаружите ошибку типа« «Нет такого файла или каталога »или OSError, Err22 , вам может потребоваться добавить notebook_name='simple_notebook'.
Имя записной книжки - это текущее имя файла.
Вот коды: https://github.com/happypetewht/text_similarity. Если у вас есть вопросы, оставьте, пожалуйста, свои комментарии.