Нейронные сети – это алгоритм машинного обучения, основанный на структуре и функциях человеческого мозга. Они способны учиться и принимать разумные решения самостоятельно, без явного программирования на это. В этой статье мы узнаем, как построить простую нейронную сеть, используя 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%). Код в этой статье обеспечивает основу, но очевидно, что прогностическая сила этой модели нуждается в значительном улучшении. Во второй части этой серии (ссылка ниже) мы поэкспериментируем с улучшением прогнозирующей способности нейронной сети путем настройки гиперпараметров.
Хотите узнать больше о науке о данных? Следите за нами на Среднем.