Task6.PyTorch понять более Нейросетевой метод оптимизации

1. Узнайте о различных оптимизатора

2. Наберитекод оптимизатор
3.Momentum
4. мерную оптимизация, оптимизация стохастического градиентного спуска реализован
5.Ada адаптивный метод регулировки градиента
6.RMSProp
7.Adam
видов 8.PyTorch выбран Оптимизатор

Градиентный спуск:

1. Стандартный метод градиентного спуска: GD
Каждый образец сразу опускают, опорное текущее направление градиентного позиции в направлении локального оптимума легко получить, и медленного обучения

нет 2. Пакетный метод спуска: БГД
больше не вход образца регулируется один раз, но после серии данных для настройки, настройки параметров модели и обновить все функции ввода затрат и связанных с ними образцов, то есть, прежде чем лечь рядом с мастером, чтобы выбрать наиболее отличное направление.

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

Моментум Оптимизации
оптимизации критериев импульс импульс
для изменения текущего значения веса будет изменен после тоговес при ударе был. При подобной прокатке мяч было времячтобы привести инерцию, ускорить прокрутку.

NAG Ньютон ускорения градиент

После того, как NAG Ньютон ускорения градиент применяется текущую скорость, импульс добавляется к стандартному поправочного коэффициента. momentun гранула градиент вслепую, но относится надоедливая гранула приходит замедлиться своей базой, как правило, знает, где следующая позиция, чтобы обновить текущий параметр местоположения.

Ada метод корректировки адаптивной градиент : Adagrad: Характеристики алгоритма обучения скорость автоматически регулируется для разреженных данных. Метод градиентного спуска на каждый шагеиспользуя ту же самую скорость обучения для каждого параметра, например радикальный подход не может эффективно использовать каждый набор данных свои собственные характеристик. Adadelta (Adagrad улучшенный алгоритм): Одна проблема заключаетсятомчто Adagradкак обучение прогрессирует, быстро обучение скорость монотонный спад. Adadelta скользящего среднего квадрата градиента квадрата, и вместо всей истории.

RMSProp : алгоритм RMSprop является корректировка обучения скорости. Adagrad будет аккумулировать весь квадрат градиентараньше, но только RMSprop вычислить соответствующее среднее значение, таким образомалгоритм может уменьшить скорость обучения снизился быстро Adagrad проблемы.

ADAM : Если Adadelta градиент внутри квадратаакачестве второго момента градиента, градиент первого момента это сумма самогосебе. Во второй момент алгоритма Адам на основе Adadelta и введениепервый момент. Первый момент, на самом деле, похоже на внутренней части метода импульса импульса.

1  импорт горелки
 2  импорт torch.utils.data как данные
 3  импорта torch.nn.functional как F
 4  импорта matplotlib.pyplot как PLT
 5  
6 LR = 0,01
 7 BATCH_SIZE = 32
 8 ЭПОХА = 12
 9  
10 х = torch.unsqueeze (факел .linspace (-1,1,1000), тусклое = 1 )
 11 у = x.pow (2) + 0,1 * torch.normal (torch.zeros (* x.size ()))
 12  
13  plt.scatter (х .numpy (), y.numpy ())
 14  plt.show ()
 15  
16 torch_dataset = Data.TensorDataset (х, у)
 17Загрузчик = Data.DataLoader (набор данных = torch_dataset, batch_size = BATCH_SIZE, перетасовать = True, num_workers = 2 )
 18  
19 torch_dataset = Data.TensorDataset (х, у)
 20 Загрузчик = Data.DataLoader (
 21      набор данных = torch_dataset,
 22      batch_size = BATCH_SIZE ,
 23      перетасовка = Правда,
 24      num_workers = 2 ,
 25  )
 26  
27  класс Net (torch.nn.Module):
 28      защиту  __init__ (Я):
 29          супер (Net, самость). __init__ ()
 30          
31         self.hidden = torch.nn.Linear (1,20 )
 32          self.predict = torch.nn.Linear (20,1 )
 33          
34      Защиту вперед (я, х):
 35          х = F.relu (self.hidden ( х))
 36          х = self.predict (х)
 37          возврата х
 38      
39 net_SGD = Чистый ()
 40 net_Momentum = Чистый ()
 41 net_RMSprop = Чистый ()
 42 net_Adam = нетто ()
 43 сетки = [net_SGD, net_Momentum, net_RMSprop, net_Adam]
 44  
45  #различные оптимизаторы 
46 opt_SGD = torch.optim.SGD (net_SGD.parameters (), LR = LR)
 47 opt_Momentum = torch.optim.SGD (net_Momentum.parameters (), LR = LR, импульс = 0,8 )
 48 opt_RMSprop = torch.optim .RMSprop (net_RMSprop.parameters (), LR = LR, альфа = 0,9 )
 49 opt_Adam = torch.optim.Adam (net_Adam.parameters (), LR = LR, Betas = (0,9, 0,99 ))
 50 оптимизаторы = [opt_SGD, opt_Momentum, opt_RMSprop, opt_Adam]
 51  
52 loss_func = torch.nn.MSELoss ()
 53 losses_his = [[], [], [], []]    # потеря записи 
54  
55  #Обучение 
56  для эпохи в диапазоне (ЭПОХА):
 57      печати ( ' Эпоха: ' , эпоха)
 58      для стадии (b_x, b_y) в Перечислите (загрузчик):           # для каждого этапа тренировочного 
59          для сети, выбор, l_his в молнии ( сети, оптимизаторы, losses_his):
 60              выход = сеть (b_x)               # получить выход для каждой сети 
61              потерь = loss_func (выход, b_y)   # потери вычислительном для каждой сети 
62              opt.zero_grad ()                # Четкие градиенты для следующего поезда 
63              loss.backward ()                 # обратного распространения, вычислить градиенты 
64              opt.step ()                      # применяются градиенты 
65              l_his.append (loss.data.numpy ())      # потери перекодировщик 
66  
67 этикеток = [ ' SGD ' , ' Импульс ' , ' RMSprop ' , ' Адам ' ]
 68  для I, l_his в Перечислим (losses_his):
 69     plt.plot (l_his, этикетка = этикетки [I])
 70 plt.legend (LOC = ' лучше ' )
 71 plt.xlabel ( ' Шаги ' )
 72 plt.ylabel ( ' Потеря ' )
 73 plt.ylim ((0, 0,2 ))
 74 plt.show ()

 

Ссылка: https: //blog.csdn.net/qingxuanmingye/article/details/90514018

рекомендация

отwww.cnblogs.com/NPC-assange/p/11373495.html