Я уверен, что каждый, кто изучает нейронные сети / глубокое обучение, сталкивается с большой проблемой: как настроить эти гиперпараметры. Это сложная часть. Настройка этих параметров требует много усилий и времени. К счастью, у нас есть такие пакеты, как Hyperopt или Hyperas. Сегодня я немного расскажу о Hyperas с моим проектом. Я расскажу о проблемах, с которыми я столкнулся, и о решениях. Если вы не знакомы с Hyperas, перейдите на Github: https://github.com/maxpumperla/hyperas

Проект состоит в том, чтобы обнаружить сходство двух китайских предложений. Я использую LSTM для построения модели и хочу настроить гиперпараметры. Конечно, об этом есть несколько постов и примеров. Но у меня есть несколько уникальных проблем:

  1. Язык ввода - китайский. Я не был уверен, может ли Hyperas работать с другими языками;
  2. Входов для нейронной сети несколько, а не один.
  3. Я использую среду Google Colaboratory и Python 3.

Я поискал в Интернете и нашел эту статью (http://blog.munhou.com/yong-hyperas-diao-xiao-keras-can-shu/) очень похожей на мой проект. Три дня пробовал несколько способов. Вот мои окончательные решения, и я прохожу их шаг за шагом.

  1. Первый код (из _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. Если у вас есть вопросы, оставьте, пожалуйста, свои комментарии.