Python 与 Keras 中的简单梯度下降

问题描述 投票:0回答:1

我正在通过在笔记本上构建自己的神经网络来练习神经网络。我正在尝试根据 Keras 中的等效模型检查我的模型。我的模型似乎与其他简单编码神经网络框架的工作方式相同,例如这个:https://towardsdatascience.com/coding-neural-network-forward-propagation-and-backpropagtion-ccf8cf369f76

但是,随着我增加纪元数,Keras 模型的权重慢慢偏离我的模型。我正在尝试使用简单的梯度下降来训练网络,批量大小等于整个训练集,将初始化权重设置为与模型中的初始化权重相同。 (我现在一直在 Iris 数据集上执行此操作,因此批量大小 = 150。)

Keras 中是否发生了一些默认情况,这意味着我在下面描述的模型的功能与我的模型(或文章中描述的模型)略有不同?比如批量归一化之类的?

from tensorflow import keras
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Activation, Input

network_shape = np.array([4, 20, 10, 1])
activations = ["relu", "relu", "sigmoid"]
model = Sequential()
model.add(Input(shape=(network_shape[0],)))
for i in range(len(activations)):
    model.add(Dense(units=network_shape[i + 1], activation=activations[i]))

model.set_weights(set_weights)

sgd = keras.optimizers.SGD(learning_rate=alpha, momentum=0.0)
model.compile(loss='binary_crossentropy', optimizer=sgd)

model.fit(X.T, y.T, batch_size=150, epochs=n_iter, verbose=0, shuffle=False)
tensorflow keras deep-learning gradient-descent
1个回答
0
投票

如果您想训练与本文中的模型相同的模型,则需要相同的初始权重和超参数。除非您正在学习一个非常简单的模型,例如

y= mx + b
,否则一旦您的轮数超过示例模型,权重将不会相同。

© www.soinside.com 2019 - 2024. All rights reserved.