说明:此代码并非个人原创,是学习其他深度学习视频教程后总结所得。 总体思路: 1. 用手写数字识别作实例进行分析。 2. 具体的思路我不是非常清楚,就是用一个深度神经网络,选定n多参数,然后就可以在一定程度上模拟任何有规律的方程或者其他现象。 3. 求解的过程就是不断让真实值贴近预测的值,这时如果差别较大,可以改变参数的权重,还有偏向值。 4. 也就是cost(w, b) = |y - output|^2,此时的w, b赋值比较随机,所以就相当于在抛物线的两侧,若想下降到O点,也就是cost函数值最小,每次可以把x(也就是w, b)的值减去一个值(斜率的倍数,在左为负,在右为正),使值逼近O点,直接上图 cost函数 抛物线 更新值 5. 此方法美其名曰梯度下降算法 结合代码分析: 文章末尾有完整代码 1.初始化权重和偏向,使用numpy.random.randn(m, n),具体意思我想你们应该懂吧 self.weights = [np.random.randn(m, n) for m, n in zip(sizes[1:], sizes[:-1])] self.biases = [np.random.randn(k, 1) for k in sizes[1:]] 2.每一轮epochs后打乱重排 random.shuffle(training_data) 3.更新值 self.update_mini_batch(mini_batch, eta) 4. backpropagation计算偏导值,也就是下图中减号后的偏导部分,不包括前面的伊塔参数,具体自己看吧 delta = self.cost_derivative(activations[-1], y) * sigmoid_prime(zs[
神经网络梯度下降算法(gradient descent)笔记
最新推荐文章于 2024-02-01 15:12:40 发布