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

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

Я буду использовать пакет Anaconda. Любая IDE приемлема. Если вы используете Google Colab, единственная проблема будет заключаться в более старой версии Python и вспомогательных библиотеках (могут быть выходные значения различны).

Первым шагом является импорт необходимых библиотек. Поскольку Anaconda не поставляется с Tensorflow, мы должны установить его с помощью !pip installtensorflow в блокноте Jupyter. Можно также использовать приглашение conda. После этого давайте импортируем необходимые библиотеки.

Второй шаг является необязательным. Но поскольку люди используют разные IDE, а Python не поддерживает обратную версию, этот шаг может быть полезен. Иногда бывает так, что из-за проблем с версией вывод не приходит. Следовательно, мы будем проверять версии, которые мы используем.

После проверки версии пришло время создать наш набор данных. Мы берем образцы 5000. Из них 20% значений будут использоваться для проверочного набора и 20% для тестового набора. Для визуализации нашей модели в Netron нам понадобится файл tensorflow lite (tflite). Netron поддерживает множество форматов файлов, но в этом руководстве мы увидим, как использовать файл tflite.

Мы сгенерируем случайный сигнал из 5000 выборок, используя numpy, а затем, используя этот сгенерированный случайный сигнал, мы создадим синусоидальную волну с шумом. Теперь у нас есть две переменные в этой точке: x_values, которая является случайным сигналом, и y_values, которая является зашумленной синусоидой.

Значения x_values ​​и y_values ​​теперь будут использоваться для создания набора данных для обучения и тестирования. Перед этим мы перемешаем наши образцы. Помните, что этот шаг является необязательным.

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

Теперь давайте создадим нашу модель нейронной сети. Модель, которую мы собираемся сделать, состоит из двух полносвязных плотных слоев. Мы будем использовать функцию активации RELU и оптимизатор Adam. Хотя можно использовать любой другой оптимизатор.

При размере пакета 100 и 500 итераций результат показан выше. Используя model.summary, сводку можно увидеть следующим образом:

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

Мы видим, что показатель r2 очень близок к единице. Оценка 97% r2 означает, что наша модель способна объяснить 97% дисперсии данных, что означает, что она также обеспечит наилучшую линию соответствия. Средние ошибки также очень меньше.

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

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

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

Теперь давайте визуализируем нашу модель глубокого обучения с помощью Netron. Многие люди не знакомы с Netron. Предлагаю зайти сюда и посмотреть все о Нетроне. Перед визуализацией мы должны преобразовать нашу модель в формат Tensorflow Lite.

Это создаст файл model.tflite в текущем рабочем каталоге. Теперь откройте Netron в браузере. Это будет выглядеть так:

Нажмите «Открыть модель» и загрузите файл model.tflite из текущего рабочего каталога.

И вывод выглядит так. Здесь вы можете увидеть блок-схему модели машины, которую мы создали. В левой верхней части экрана есть 3 значка. Два значка предназначены для увеличения и уменьшения масштаба. Значок с 3 горизонтальными линиями будет отображать раскрывающийся список следующим образом.

Как видите, есть несколько доступных вариантов. Вы также можете сохранить макет модели в виде файла изображения. При нажатии на любой блок отобразятся свойства узла.

Это было все для этой статьи. Надеюсь, вы найдете это чтение полезным.