1 Вопрос: Как я могу переучить модель на новых данных, не потеряв предыдущую модель

вопрос создан в Thu, May 2, 2019 12:00 AM

Для моих текущих бизнес-требований мне нужна классифицирующая модель, которая должна обучаться на данных, которые поступают ежедневно, и самое главное, что данные не доступны для меня после этого дня, поэтому мне нужно обучать моя модель в тот же день, а также продолжает тренировать ее ежедневно, не теряя тренировки, сделанные в предыдущий день (для увеличения данных тренировки). Как я должен справиться с этой задачей. Я читал о концепции, называемой машинным обучением онлайн или инкрементным обучением, но не знаю, как ее реализовать. Пожалуйста, дайте ваше предложение по этому вопросу. Что может быть возможным решением этой проблемы.

    
1
  1. Вы могли бы встретить новые классы на лету (между днями)?
    2019-05-09 08: 03: 21Z
  2. Новые классы не встретятся. Это проблема классификации документов, когда мы получаем сотни документов каждый день, которые должны быть классифицированы по определенным классам, имя и количество классов являются постоянными
    2019-05-09 08: 50: 08Z
  3. В этом случае это более точная настройка, а не настройка инкрементного обучения. Возможно, вам придется справиться с дисбалансом классов, я думаю, что некоторые классы будут чрезмерно представлены в вашем потоке.
    2019-05-09 10: 33: 36Z
  4. Да, безусловно, в данных будет дисбаланс классов, и мы справимся с этим, увидев, как модель работает в обычном режиме обучения. Но первый вопрос заключается в том, как мы собираемся тренироваться на пакетных данных постепенно. Если мы получим решение для обучения, то после этого мы можем подумать о некоторых ансамблевых методах для повышения точности.
    2019-05-12 10: 11: 44Z
1 ответ                              1                         

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

model = load_model (old_kernel) model.fit (new_x_train, new_y_train, epochs = 100, batch_size = 2000, shuffle = True)

    
1
2019-05-02 15: 46: 42Z
  1. Спасибо за ответ, Цзяцзе, но я действительно боюсь, что использование этого метода приведет к удалению данных предыдущей обученной модели и началу работы с новой точки. Я просто хотел знать, действительно ли вы уверены, что обучение начнется с того момента, когда оно сохранит существующее обучение.
    2019-05-06 06: 28: 38Z
  2. Я бы посоветовал, когда вы закончите с новым обучением, тогда вы используете предыдущий набор данных для его проверки. Проверьте правильность проверки. Я думаю, что если в новых данных есть аналогичные шаблоны из старых данных, то он должен сохранить существующую подготовку. Это могут быть новые шаблоны, которых не было в старых данных, система будет изучать новые шаблоны. Но если он имеет те же шаблоны из предыдущих данных, метка будет другой. Тогда модель может начать меняться. Это зависит от ваших данных. Система должна быть в состоянии узнать информацию из данных, если данные не согласованы, то система будет сбита с толку.
    2019-05-08 18: 11: 11Z
  3. Эй, @Jiajie Yu, я до сих пор не могу понять, как реализовать то, что вы предложили. Я ищу метод, в котором я мог бы сохранить веса модели и использовать их для обучения модели для другой партии, используя те же веса.
    2019-05-12 10: 15: 39Z
  4. Не могли бы вы опубликовать, какая именно у вас проблема. Я предполагал, что у вас есть обученная модель, и вы хотите переобучить ее новой партии данных. old_kernel из моего ответа - ваша ранее обученная модель. Так что нам придетсяd верните его функцией load_model, скопируйте его в model. Затем установите новые данные с помощью функции fit. И наконец, вам просто нужно сохранить новую модель так же, как и старую. Например, model_json = model.to_json() with open("new.json", "w") as json_file: json_file.write(model_json) model.save("new.h5") Если вы получили какую-либо ошибку, пожалуйста, опубликуйте сообщение об ошибке. Спасибо.
    2019-05-13 13: 45: 54Z
источник размещен Вот