首页 > 编程语言 >优化算法篇

优化算法篇

时间:2022-09-06 23:36:28浏览次数:49  
标签:优化 epoch data 算法 cost lis xs grad

 梯度下降与随机梯度下降:

import torch
import matplotlib.pyplot as plt
import numpy as np
x_data = [5,6,7,8.5,9,10,11.5,12]
y_data = [1,2,8,4,5,6.5,7.5,8]

w = 1
#初始权重

def forward(x):
    return x * w

#MSE
def cost(xs,ys):
    cost = 0
    for x,y in zip(xs,ys):
        y_pred = forward(x)
        cost += (y-y_pred)**2
    return cost/len(xs)

def SGD_loss(xs,ys):
    y_pred = forward(xs)
    return (y_pred - ys)**2

def SGD_gradient(xs,ys):
    return 2*xs*(xs*w-ys)

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

def draw(x,y):
    fig = plt.figure(num=1, figsize=(4, 4))
    ax = fig.add_subplot(111)
    ax.plot(x,y)
    plt.show()

# epoch_lis  =[]
# loss_lis = []
# learning_rate = 0.012
#
# for epoch in range(100):
#     cost_val = cost(x_data,y_data)
#     grad_val = gradient(x_data,y_data)
#     w -= learning_rate*grad_val
#     print("Epoch = {} w = {} loss = {} ".format(epoch,w,cost_val))
#     epoch_lis.append(epoch)
#     loss_lis.append(cost_val)
# print(forward(4))
# draw(epoch_lis,loss_lis)
# draw(x_data,y_data)


l_lis= []
epoch = []
learning_rate = 0.009
#SGD
for epoch in range(10):
    for x,y in zip(x_data,y_data):
        grad = SGD_gradient(x,y)
        w -= learning_rate*grad
        print(" x:{}  y:{}   grad:{}".format(x,y,grad))
        l = SGD_loss(x,y)
        print("loss: ",l)
        l_lis.append(l)

X = [int(i) for i in range(len(l_lis))]
draw(X,l_lis)

 

标签:优化,epoch,data,算法,cost,lis,xs,grad
From: https://www.cnblogs.com/MrMKG/p/16660115.html

相关文章

  • 算法养成计划--day2
    200220906刷题第一个很简单,第二个评论区有人用求余公式,学到了https://leetcode.cn/problems/zuo-xuan-zhuan-zi-fu-chuan-lcof/solution/mian-shi-ti-58-ii-zuo-xuan-z......
  • Linux 后台开发必知的 I/O 优化知识总结
      IO性能对于一个系统的影响是至关重要的。一个系统经过多项优化以后,瓶颈往往落在数据库;而数据库经过多种优化以后,瓶颈最终会落到IO。而IO性能的发展,明显落后于CPU的发......
  • 算法学习—————PAM回文自动机
    时隔一年,第一次学习新的算法原理和AC自动机差不多基本思想:两棵树分别代表奇偶在一个回文串两边同时填上相同字符可以得到另一个回文串,以此构建两棵树树上维护信......
  • 【基础算法】排序专题
    快速排序912.排序数组classSolution{public:voidquick_sort(vector<int>&q,intl,intr){if(l>=r)return;inti=l-1,j=r......
  • Linux 系统优化
    题目系统资源限制设置:设置所有用户的硬件跟软件的最大进程数、最大文件打开数为65535;开启IPV4恶意icmp错误消息保护;开启SYN洪水攻击保护;允许系统打开的端口范......
  • .NET 纯原生实现 Cron 定时任务执行,未依赖第三方组件 (Timer 优化版)
    在上个月写过一篇 .NET纯原生实现Cron定时任务执行,未依赖第三方组件的文章,当时 CronSchedule的实现是使用了,每个服务都独立进入到一个while循环中,进行定期扫描是......
  • 微信小程序苹果手机底部小黑条优化
    苹果官方推荐使用env(),constant()来适配,而env()和constant()函数有个必要的使用前提,当网页设置viewport-fit=cover的时候才生效。padding-bottom:constant(safe-area-ins......
  • GPU 利用率低常见原因分析及优化
    一、GPU利用率的定义本文的GPU利用率主要指GPU在时间片上的利用率,即通过nvidia-smi显示的GPU-util这个指标。统计方式为:在采样周期内,GPU上面有kernel执行的......
  • STL 算法小结2
    关于stable_sort()和sort()的区别:C++中sort和stable_sort的区别:sort是快速排序实现,因此是不稳定的;stable_sort是归并排序实现,因此是稳定的;对于相等的元素sort可能改变......
  • 项目优化策略
       前言:  笔者认为,优化策略有千万种,主要还是根据自身项目的架构来进行优化,才能达到物尽其用的。笔者也是第一次尝试对项目进行优化,可能略显不足,欢迎各位指正。......