Скачать книгу

Преобразуем метки в массив numpy

      labels = np.array(labels)

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

      model = tf.keras.Sequential([

      tf.keras.layers.Embedding(input_dim=1000, output_dim=16, input_length=max_sequence_length),

      tf.keras.layers.Conv1D(128, 3, activation='relu'), # Уменьшили размер ядра до 3

      tf.keras.layers.GlobalMaxPooling1D(),

      tf.keras.layers.Dense(1, activation='sigmoid')

      ])

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

      model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])

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

      history = model.fit(padded_sequences, labels, epochs=10, verbose=1)

      # Оцениваем модель на тестовых данных

      test_texts = ["Это лучшая книга.", "Не стоит тратить деньги.", "Мне понравился фильм.", "Ужасное качество товара."]

      test_labels = [1, 0, 1, 0] # Метки для тестовых данных

      test_sequences = tokenizer.texts_to_sequences(test_texts)

      padded_test_sequences = tf.keras.preprocessing.sequence.pad_sequences(test_sequences, maxlen=max_sequence_length)

      test_labels = np.array(test_labels)

      test_loss, test_accuracy = model.evaluate(padded_test_sequences, test_labels)

      print(f"Точность на тестовых данных: {test_accuracy:.4f}")

      # Визуализация результатов

      plt.figure(figsize=(12, 4))

      plt.subplot(1, 2, 1)

      plt.plot(history.history['accuracy'], label='Точность на обучении')

      plt.xlabel('Эпохи')

      plt.ylabel('Точность')

      plt.legend()

      plt.subplot(1, 2, 2)

      plt.plot(history.history['loss'], label='Потери на обучении')

      plt.xlabel('Эпохи')

      plt.ylabel('Потери')

      plt.legend()

      plt.show()

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

      1. График точности на обучении (Точность на обучении): Этот график показывает, как точность модели изменяется в течение эпох обучения. Точность на обучении измеряет, как хорошо модель предсказывает данные обучения. Вы ожидаете, что точность будет увеличиваться с каждой эпохой. Если точность растет, это может указывать на то, что модель успешно изучает данные.

      2. График потерь на обучении (Потери на обучении): Этот график отражает, как уменьшается потеря модели на обучении с течением эпох. Потери представляют собой меру того, насколько сильно предсказания модели отличаются от фактических меток. Цель – минимизировать потери. Уменьшение потерь также указывает на успешное обучение модели.

      На практике хорошо обученная модель будет иметь следующие характеристики:

      – Точность на обучении растет и стабилизируется на определенном уровне.

      – Потери на обучении уменьшаются и стабилизируются на низком уровне.

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

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

      Кроме того, существуют более сложные архитектуры, которые комбинируют RNN и CNN, чтобы использовать преимущества обоих типов сетей. Например, архитектура под названием Transformer, изначально разработанная для машинного перевода, стала основой для многих современных моделей в NLP, таких как BERT и GPT.

      Архитектура Transformer представляет собой мощный прорыв в области обработки естественного языка (NLP) и обработки последовательностей в целом. Она представляет собой нейронную сеть, спроектированную специально для работы с последовательностями, и она имеет ряд ключевых особенностей:

      1. Механизм внимания: Одной из ключевых особенностей Transformer является

Скачать книгу