← На главную Воспоминания

Среда, 18 Октября 2023

Изучил многослойные нейронные сети(также известные как глубокие нейронные сети), и функцию активации. Функция активации это функция которая применяется к нейрону, изменяя его значение, т.к нейрон это по сути функция точки на линии, функция активации как бы искревляет линию. Например функия выпрямителя max(0, value). Все что ниже нуля оно превращает в 0. Все что выше оставляет как есть. Функция relu это y = max(0, w*x + b)

from tensorflow import keras
from tensorflow.keras import layers

model = keras.Sequential([
    # the hidden ReLU layers
    layers.Dense(units=4, activation='relu', input_shape=[2]),
    layers.Dense(units=3, activation='relu'),
    # the linear output layer 
    layers.Dense(units=1),
])

Изучил оптимизатор и функцию потери В нейронных сетях, также как и других видах машинного обучения можно использовать Mean absolute error как функцию потери. В качестве оптимизатора выступает Стохастический градиентный спуск, это алгоритм который пытается уменьшить потери изменяя веса и байес

Пример кода обучения нейронной сети

import pandas as pd
from IPython.display import display

red_wine = pd.read_csv('../input/dl-course-data/red-winecsv')

# Create training and validation splits
df_train = red_wine.sample(frac=0.7, random_state=0)
df_valid = red_wine.drop(df_train.index)
display(df_train.head(4))

# Scale to [0, 1]
max_ = df_train.max(axis=0)
min_ = df_train.min(axis=0)
df_train = (df_train - min_) / (max_ - min_)
df_valid = (df_valid - min_) / (max_ - min_)

# Split features and target
X_train = df_train.drop('quality', axis=1)
X_valid = df_valid.drop('quality', axis=1)
y_train = df_train['quality']
y_valid = df_valid['quality']
from tensorflow import keras
from tensorflow.keras import layers

model = keras.Sequential([
    layers.Dense(512, activation='relu', input_shape=[11]),
    layers.Dense(512, activation='relu'),
    layers.Dense(512, activation='relu'),
    layers.Dense(1),
])
model.compile(
    optimizer='adam',
    loss='mae',
)
history = model.fit(
    X_train, y_train,
    validation_data=(X_valid, y_valid),
    batch_size=256,
    epochs=10,
)
import pandas as pd
# convert the training history to a dataframe
history_df = pd.DataFrame(history.history)
# use Pandas native plot method
history_df['loss'].plot();

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