Нейронные сети – это алгоритм машинного обучения, основанный на структуре и функциях человеческого мозга. Они способны учиться и принимать разумные решения самостоятельно, без явного программирования на это. В этой статье мы узнаем, как построить простую нейронную сеть, используя TensorFlow, популярную библиотеку машинного обучения с открытым исходным кодом, и Python, язык программирования, который широко используется в области искусственного интеллекта и машинное обучение.

Предпосылки:

Прежде чем мы углубимся в детали построения нейронной сети, важно иметь базовое понимание концепций машинного обучения, а также некоторое знакомство с программированием на Python. Кроме того, на вашем компьютере должен быть установлен TensorFlow. Если вы новичок в TensorFlow, вы можете обратиться к официальной документации за инструкциями по установке.

Шаг 1. Импортируйте необходимые библиотеки

Первым шагом в построении нейронной сети с использованием TensorFlow является импорт необходимых библиотек. Нам нужно будет импортировать библиотеку TensorFlow, а также некоторые другие библиотеки, которые будут использоваться для загрузки данных и управления ими.

import pandas as pd
import tensorflow as tf
from tensorflow import keras
from sklearn.model_selection import train_test_split

Шаг 2. Загрузите и подготовьте данные

Далее нам нужно загрузить и подготовить данные, которые мы будем использовать для обучения и тестирования нашей нейронной сети. Это можно сделать с помощью встроенных функций в TensorFlow или импортируя данные. Ниже мы присваиваем имена столбцам набора данных, импортируем их из CSV, конвертируем в DataFrame, а затем показываем первые 5 строк:

wine_names = ['Class', 'Alcohol', 'Malic acid', 'Ash', 'Alcalinity of ash', 'Magnesium', 'Total phenols', 'Flavanoids', 'Nonflavanoid phenols', 'Proanthocyanins', 'Color intensity', 'Hue', 'OD280/OD315', 'Proline']
df = pd.read_csv('https://archive.ics.uci.edu/ml/machine-learning-databases/wine/wine.data', names = wine_names)
df = pd.DataFrame(df)
df.head()

Затем мы можем указать целевую или зависимую (т. е. «Y») переменную и предиктор или независимые переменные (т. е. «X»). Затем мы разделяем данные на наборы для обучения и тестирования, которые будут использоваться для обучения и оценки производительности нашей нейронной сети.

X = df[['Alcohol', 'Malic acid', 'Ash', 'Alcalinity of ash', 'Magnesium', 'Total phenols', 'Flavanoids', 'Nonflavanoid phenols', 'Proanthocyanins', 'Color intensity', 'Hue', 'OD280/OD315', 'Proline']]
y = df['Class']

# Split into training (70%) and test (30%):
X_train,X_test,y_train,y_test = train_test_split(X, y, test_size=0.30, random_state=0

Шаг 3. Определите модель

Теперь, когда мы подготовили данные, мы можем определить структуру нашей нейронной сети и показать ее структуру с помощью «.summary()». В TensorFlow это делается с помощью вычислительного графа, который представляет собой серию взаимосвязанных узлов, представляющих математические операции, выполняемые над данными.

input_ = keras.layers.Input(shape=X_train.shape[1:])
hidden1 = keras.layers.Dense(30, activation="relu")(input_)
hidden2 = keras.layers.Dense(30, activation="relu")(hidden1)
hidden3 = keras.layers.Dense(30, activation="relu")(hidden2)
concat = keras.layers.concatenate([input_, hidden3])
output = keras.layers.Dense(1)(concat)

model = keras.models.Model(inputs=[input_], outputs=[output])

model.summary()

Шаг 4. Скомпилируйте и обучите модель

model.compile(loss="categorical_crossentropy", optimizer=keras.optimizers.SGD(lr=1e-3),metrics=['accuracy'])

history = model.fit(X_train, y_train, epochs=2,
                    validation_data=(X_test, y_test))

Шаг 5. Сделайте прогноз с помощью модели

X_test = pd.DataFrame(X_test)
G = X_test.sample(random_state=5)

print(model.predict(G))

entropy_test = model.evaluate(X_test, y_test)
y_pred = model.predict(X_test)

Вывод:

В этой очень краткой статье с практическими рекомендациями не рассматриваются детали нейронных сетей и способов улучшения прогнозирующей способности, поскольку она просто предназначена для того, чтобы познакомить читателя с процессом и структурой создания нейронной сети в Python. Вы заметите, что точность этой модели очень низкая (около 30%). Код в этой статье обеспечивает основу, но очевидно, что прогностическая сила этой модели нуждается в значительном улучшении. Во второй части этой серии (ссылка ниже) мы поэкспериментируем с улучшением прогнозирующей способности нейронной сети путем настройки гиперпараметров.



Хотите узнать больше о науке о данных? Следите за нами на Среднем.