Рубрики
Без рубрики

Создайте рецепты приготовления, которые гарантируют пищевое отравление, с библиотеками на основе LSTM

Если вы не живете в амазонском лесу без доступа к Интернету, есть буквально без … Помечено в Deeplerning, LSTM, NeuralnetWorks, Python.

Если вы не живете в амазонском лесу без доступа к Интернету, нет случайно никакой вероятности, что вы не слышали о глубоком буме, в течение последних нескольких лет.

Обучение нейронных сетей, которые могут принимать решения, различать поддельные изображения или генерировать поддельные видео, в относительно короткое время становится нормой.

Это не все должно быть страшно, хотя. Иногда вы можете просто повеселиться со всей этой силой.

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

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

LSTM и прогнозирование «следующих ценностей»

LSTM – это тип программного обеспечения (конкретно, нейронная сеть), которые могут изучать шаблон последовательности данных (вы можете услышать, что в качестве данных серии времени) следует и, таким образом, предсказывает следующие «значения» последовательности.

Вы когда-нибудь использовали Gmail? Возможно, вы видели умного составляющие в действии, и если у вас нет великого визуального объяснения этого.

( Кредиты на AndroidAuthority.com)

Gmail – это наверное Используя здесь LSTM, который обучен на различных последовательностях. Так что это может смело предсказать, что если токен «завтра?» Достаточно близко к токену «Когда есть», то самый вероятный набор «следующих токенов» – «Хорошее время для вас?»

Строительство нашего психики

В этой статье мы собираемся следовать подходу кодера, как я упоминал ранее. Это означает, что вам не нужно никаких особых знаний LSTM или глубокого обучения, чтобы сделать работу.

Мы собираемся использовать отличную библиотеку под названием

textgenrnn

. Следующие шаги:

  • Настройка среды Dev
  • Подготовьте данные в дружеском формате
  • Позвоните в библиотеку своими данными
  • Предсказывать

Настройка среды

Во-первых, мы создаем новый VirtualenV в новой папке

virtualenv -p python3 myenv
And we source it
source myenv/bin/activate
pip install tensorflow
pip install textgenrnn

Убедитесь, что все прошло хорошо, делая

import textgenrnn
Using TensorFlow backend.

Подготовьте данные в дружеском формате

Взглянув немного в [наборах данных] https://github.com/minimaxir/textgenrnn/tree/master/datasets ) Папка Похоже, мы хотим, чтобы каждый образец сверху.

Но в соответствии с документацией он может быть обучен в любом файле, поэтому давайте создадим рецепты TXT и попробуйте тренироваться. Или, возможно, найти что-то готовое.

У меня вокруг, у меня есть Это Прекрасная страница и скачала набор данных Chili. Давайте попробуем накормить его как есть и посмотрите, как он идет. Вот выдержка файла Chili

@@@@@ Now You're Cooking! Export Format
1981 WORLD CHAMP BUTTERFIELD STAGELINE CHILI

meats, chili

4 medium onions, minced
10-pound lean beef brisket, finely ch
1/4 cup oil
1 1/2 cloves garlic; minced

Давайте тренируем модель:

  • Импортировать библиотеку
from textgenrnn import textgenrnn
  • Инициализировать модель
textgen = textgenrnn()
  • Начните обучение, давая вклад
textgen.train_from_file('chili.txt', num_epochs=20)

Первые результаты

Результаты, которые возвращаются, довольно сходятся. Но что-то не так. Например: Если я бегу

textgen.generate()

я получил

simmer for an hour. Originally slightly to cut into ground beef in brown.  Add to the chili powder. Simmer for 1

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

Это просто понимает последовательности персонажей-почты. Для более подробной информации вы можно прочитать Это Прекрасная статья из Андрея Карпати

Итак, нам нужно как-то изменить входной формат. Если мы откроем его, мы видим много бесполезных, для нашей подготовки, вещей. Например,

Exported from Now You're Cooking! v5.93

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

У нас есть возможность очистить файл Chili.txt вручную, либо с Python. Или получите более подходящий набор данных

Найти данные для нашего обучения

Kaggle – это единый магазин для таких целей. Копая, немного я нашел Это набор данных, который выглядит структурированным и чистым

Превратим данные в формат, который подходит для наших потребностей (один рецепт на линию).

Вот как я сделал это и обучил сеть. Обратите внимание, что сеть для того, чтобы быть своевременно обученным своевременному использованию GPU; Поскольку GPU очень хороши в матричных мультипликациях, что является основой нервной сети обучения.

Поэтому я запускал этот код в Google Collab, хотя, если у вас есть компьютер с GPU NVIDIA, вы можете сделать это локально слишком.

import json
from textgenrnn import textgenrnn

recipes_file = open('./recipes.json')

lines = recipes_file.readlines()

lines = [dict(json.loads(line)) for line in lines]

recipes = []
for line in lines:
  features = []

  description = line['Description']
  ingredients = line['Ingredients']
  method = line['Method']

  for key in [description, ingredients, method]:
    if key != None and len(key) > 0:
      features.append(method)
  recipes.append(features)

recipes_text = [ '.'.join(recipe_list[0]) for recipe_list in recipes]

write_to = open('recipes_text.txt', 'w')
write_to.write('\n'.join(recipes_text))

textgen = textgenrnn()
textgen.train_from_file('recipes_text.txt', num_epochs=20)


for i in range(5):
    textgen.generate()

Результаты

Предоставляя RNNS/LSTMS раньше, я впечатлен как от результатов результатов, библиотека возвращается, скорость она имеет (потребовалось около 2 минут на эпоху с текущим набором данных) и, конечно, простота использования.

Вот результат:

Put the sponge and sugar in a saucepan with the mustard and bake for 15 mins. 
Meanwhile, make the frosted custard and stir to the sugar. 
Stir the chopped chili flakes and stir in the flour, peel and some seasoning. Cook for a further 3 mins until the sugar has dissolved. Add the dressing and top 

Как я уже упоминал выше, это невероятный результат, потому что сеть не понимает значение слов или даже слов. Это просто узнает шаблон последовательности персонажей набора данных !!

И хотя это читаемый абзац, вы все еще можете получить пищевое отравление. По крайней мере, вот что я бы получил, если бы я ел губку сахаром.:)

Подробнее, если вы заинтересованы

Спасибо за прочтение этой статьи и надеюсь, что вам понравилось. RNNS и LSTMS являются сложными технологиями, и стоит расследовать их немного больше, даже если вы просто довольны потребляемыми такими библиотеками (что отлично, вам не нужно быть экспертом AI, просто чтобы добавить некоторую разум в ваше приложение) Отказ

Некоторые ресурсы, которые стоит проверить:

Оригинал: “https://dev.to/perigk/generate-cooking-recipes-that-guarantee-food-poisoning-with-lstm-based-libraries-1hpg”