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