Нейросети. Обработка естественного языка. Джейд Картер
Чтение книги онлайн.

Читать онлайн книгу Нейросети. Обработка естественного языка - Джейд Картер страница 10

СКАЧАТЬ для обучения сети

      df = pd.DataFrame({'timesteps': timesteps, 'series': series})

      window_size = 10 # Размер окна для создания последовательных образцов

      batch_size = 32 # Размер пакета

      # Функция для создания последовательных образцов из временного ряда

      def create_sequences(series, window_size, batch_size):

      dataset = tf.data.Dataset.from_tensor_slices(series)

      dataset = dataset.window(window_size + 1, shift=1, drop_remainder=True)

      dataset = dataset.flat_map(lambda window: window.batch(window_size + 1))

      dataset = dataset.shuffle(1000).map(lambda window: (window[:-1], window[-1]))

      dataset = dataset.batch(batch_size).prefetch(1)

      return dataset

      train_dataset = create_sequences(series, window_size, batch_size)

      # Создаем модель LSTM

      model = Sequential([

      LSTM(50, return_sequences=True, input_shape=[None, 1]),

      LSTM(50),

      Dense(1)

      ])

      # Компилируем модель

      model.compile(loss='mse', optimizer='adam')

      # Обучаем модель

      model.fit(train_dataset, epochs=10)

      # Делаем прогноз на будущее

      future_timesteps = np.arange(100, 140, 1)

      future_series = []

      for i in range(len(future_timesteps) – window_size):

      window = series[i:i + window_size]

      prediction = model.predict(window[np.newaxis])

      future_series.append(prediction[0, 0])

      # Визуализируем результаты

      plt.figure(figsize=(10, 6))

      plt.plot(timesteps, series, label="Исходный ряд", linewidth=2)

      plt.plot(future_timesteps[:-window_size], future_series, label="Прогноз", linewidth=2)

      plt.xlabel("Время")

      plt.ylabel("Значение")

      plt.legend()

      plt.show()

      ```

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

      На результате данного примера мы видим следующее:

      1. Исходный временной ряд (синяя линия): Это синусоидальная волна, которая была сгенерирована как пример временного ряда.

      2. Прогноз модели (оранжевая линия): Это результаты прогноза, сделанные моделью LSTM на будущее. Модель пытается предсказать значения временного ряда на основе предыдущих значений. Оранжевая линия отображает прогнозируемую часть временного ряда.

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

      2. Gated Recurrent Unit (GRU):

      GRU (Gated Recurrent Unit) – это архитектура рекуррентных нейронных сетей (RNN), которая, как вы сказали, является более легкой и вычислительно эффективной по сравнению с LSTM (Long Short-Term Memory). GRU была разработана для решения проблемы затухания градиентов, которая является одной из основных проблем при обучении RNN.

      Вот основные характеристики GRU:

      1. Воротные механизмы (Gating Mechanisms): GRU также использует воротные механизмы, как LSTM, но в упрощенной форме. У нее есть два ворота – ворот восстановления (Reset Gate) и ворот обновления (Update Gate).

      2. Ворот восстановления (Reset Gate): Этот ворот решает, какую информацию из предыдущего состояния следует забыть. СКАЧАТЬ