首页 > 编程语言 >2-梯度下降算法

2-梯度下降算法

时间:2024-08-11 21:05:16浏览次数:9  
标签:val 梯度 list epoch 下降 grad 算法 cost data




梯度下降算法只能保证找到的是局部最优,不是全局最优

平常我们经过大量实验,发现局部最优点不是很多,所以可以使用梯度下降算法。
但是还要提防鞍点

下面进行实现梯度下降算法

点击查看代码
import numpy as np
import matplotlib.pyplot as plt

x_data = [1.0, 2.0, 3.0]
y_data = [2.0, 4.0, 6.0]

w = 1.0  # 初始化w

def forward(x):
    return w * x

def cost(x_data, y_data):
    cost = 0
    for x, y in zip(x_data, y_data):
        y_pred = forward(x)
        cost += (y_pred - y) ** 2

    return  cost/len(x_data)

def gradient(x_data, y_data):
    grad = 0
    for x, y in zip(x_data, y_data):
        grad += 2 * x * (x * w - y)
    return grad/len(x_data)

epoch_list = []
cost_list = []

for epoch in range(100): # 进行100轮训练
    cost_val = cost(x_data, y_data) # 记录每轮训练的损失值
    grad_val = gradient(x_data, y_data)
    w -= 0.01 * grad_val # 梯度下降算法
    epoch_list.append(epoch)
    cost_list.append(cost_val)
    print('Epoch: ', epoch, 'loss: ', cost_val, 'w: ', w)

print('After training:', forward(4))

plt.plot(epoch_list, cost_list)
plt.show()

有时候cost会不平滑

为了绘图的时候更加平滑,可以对cost做指数加权平均

标签:val,梯度,list,epoch,下降,grad,算法,cost,data
From: https://www.cnblogs.com/morehair/p/18353902

相关文章

  • 05-组件生命周期及diff算法
    组件生命周期及diff算法生命周期回调函数理解旧新生命周期总结重要的勾子即将废弃的勾子DOM的diffing算法key的作用经典面试题:生命周期回调函数理解1.组件从创建到死亡它会经历一些特定的阶段。2.React组件中包含一系列勾子函数(生命周期回调函数),会在特......
  • 【C++算法】双指针
    移动零题目链接:移动零https://leetcode.cn/problems/move-zeroes/description/算法原理这类题是属于数组划分、数组分开题型代码步骤:使用cur遍历数组当cur所指的元素等于0时,cur向后面移动当cur所指的元素不等于0时,dest向后面移动,cur所指元素与dest移动后所指的元素交换当......
  • 第九天:K-Means算法
    K-Means算法简介K-Means算法是一种广泛使用的聚类算法,旨在将数据集分成K个预定义的簇。每个簇的中心是簇中所有点的均值,称为质心。K-Means算法的目标是最小化每个数据点到其所属簇的质心的距离的平方和。算法原理K-Means算法的工作原理可以分为以下几个步骤:初始化:随机......
  • 算法题系列5
    题目描述模拟一套简化的序列化传输方式,请实现下面的数据编码与解码过程1.编码前数据格式为[位置,类型,值],多个数据的时候用逗号分隔,位置仅支持数字,不考虑重复等场景;类型仅支持:Integer/String/Compose(Compose的数据类型表示该存储的数据也需要编码)2.编码后数据参考图示,数据......
  • 用电量预测 | 基于BiLSTM双向长短期记忆神经网络算法的用电量预测附matlab完整代码
    用电量预测|基于BiLSTM双向长短期记忆神经网络算法的用电量预测附matlab完整代码数据收集:收集历史用电量数据,包括时间戳和相应的用电量值。选择模型:选择合适的模型进行预测,可以根据数据特点和需求选择合适的模型。训练模型:使用历史数据训练模型,并根据评估指标来调整......
  • 【WSN覆盖优化】基于鱼鹰优化算法OOA求解无线传感器节点2D覆盖优化问题附Matlab代码
    鱼鹰优化算法(OspreyOptimizationAlgorithm,OOA)是一种基于鱼鹰捕鱼行为的启发式优化算法,可用于解决优化问题。在无线传感器网络(WSN)中,覆盖优化是一个关键问题,涉及到最大化网络覆盖范围并减少节点数量。以下是一个简单的示例框架,展示如何基于OOA算法求解无线传感器节点的二......
  • 什么是算法
    1.概述算法指的是为了完成某一事情(或者解决某一问题),而经过特定步骤的处理之后得到结果的一种手段具有明确的步骤/顺序/可行性计算机擅长做固定的运算,例如求和等计算型的处理,通过合适的算法(合适的处理策略),可以大大降低运算所需要的时间2.举例为了对数字进行排序......
  • 算法笔记|Day22回溯算法IV
    算法笔记|Day22回溯算法IV☆☆☆☆☆leetcode491.递增子序列题目分析代码☆☆☆☆☆leetcode46.全排列题目分析代码☆☆☆☆☆leetcode47.全排列II题目分析代码☆☆☆☆☆leetcode332.重新安排行程(待补充)题目分析代码☆☆☆☆☆leetcode51.N皇后(待补充)题目分析......
  • 【WSN覆盖优化】基于斑马优化算法ZOA求解无线传感器节点2D覆盖优化问题附Matlab代码
    以下是一个简单的示例Matlab代码,演示如何使用斑马优化算法(ZebraOptimizationAlgorithm,ZOA)来解决无线传感器节点(WSN)的2D覆盖优化问题:ini复制%ZebraOptimizationAlgorithm(ZOA)forWirelessSensorNetwork(WSN)CoverageOptimization%设置参数num_nodes=50;......
  • 探索Python中的插入排序算法
    探索Python中的插入排序算法插入排序(InsertionSort)是一种简单直观的排序算法。虽然在大规模数据集上效率不如一些高级排序算法,但插入排序在处理小规模数据集或部分有序的数据时表现非常优秀。本文将介绍插入排序的工作原理、实现方法以及它的时间复杂度。插入排序的工作......