首页 > 其他分享 >囚徒4.0_13_梯度

囚徒4.0_13_梯度

时间:2023-11-18 19:44:21浏览次数:41  
标签:13 plt 4.0 idx 梯度 np x1 grad 囚徒

囚徒4.0_13_梯度

这是是关于求取梯度的


# coding: utf-8
import numpy as np
import matplotlib.pylab as plt
from mpl_toolkits.mplot3d import Axes3D
#非批处理梯度求取 (1,2)(x1,x2)
def _numerical_gradient_no_batch(f, x):
h = 1e-4 # 0.0001
grad = np.zeros_like(x) #对x进行复制
#他的思想是先修改x1,这个时候x2没有改变,在求取x1的数值微分后,复原x1。之后求取x2的
for idx in range(x.size):
tmp_val = x[idx]
x[idx] = float(tmp_val) + h
fxh1 = f(x) # f(x+h)
x[idx] = tmp_val - h
fxh2 = f(x) # f(x-h)
grad[idx] = (fxh1 - fxh2) / (2*h)
x[idx] = tmp_val # 还原值
return grad
#批处理的梯度求取
def numerical_gradient(f, X):
if X.ndim == 1:
return _numerical_gradient_no_batch(f, X)
else:
grad = np.zeros_like(X)
#在这里X是二维数组了每一行为一个 坐标值(x1,x2)
for idx, x in enumerate(X):
grad[idx] = _numerical_gradient_no_batch(f, x)
return grad
#求和
def function_2(x):
if x.ndim == 1:
return np.sum(x**2)
else:
return np.sum(x**2, axis=1)
def tangent_line(f, x):
d = numerical_gradient(f, x) #梯度矩阵
print(d)
y = f(x) - d*x
return lambda t: d*t + y
if __name__ == '__main__':
x0 = np.arange(-2, 2.5, 0.25)
x1 = np.arange(-2, 2.5, 0.25)
#建立格网 在这里是二维
X, Y = np.meshgrid(x0, x1)
#坍缩为一维 按照行来进行
X = X.flatten()
Y = Y.flatten()
#梯度矩阵
grad = numerical_gradient(function_2, np.array([X, Y]) )#np.array([X, Y]) 就是建立格网点
print(grad.shape)
print(grad)
# plt.figure()
# plt.quiver(X, Y, -grad[0], -grad[1], angles="xy",color="#666666")#,headwidth=10,scale=40,color="#444444")
# plt.xlim([-2, 2])
# plt.ylim([-2, 2])
# plt.xlabel('x0')
# plt.ylabel('x1')
# plt.grid()
# plt.legend()
# plt.draw()
# plt.show()

标签:13,plt,4.0,idx,梯度,np,x1,grad,囚徒
From: https://www.cnblogs.com/qt-pyq/p/17840977.html

相关文章

  • 囚徒4.1_12_数值微分近似
    数值微分近似#囚徒4.0_13_数值微分近似importnumpyasnpimportmatplotlib.pylabasplt#求数值微分导数defnumerical_diff(f,x):h=1e-4#0.0001return(f(x+h)-f(x-h))/(2*h)#函数deffunction_1(x):return0.01*x**2+0.1*xdeftangent_line(f,x):d......
  • 2023-2024-1 20231321 《计算机基础与程序设计》第八周学习总结
    2023-2024-120231321《计算机基础与程序设计》第八周学习总结作业信息这个作业属于哪个课程<班级的链接>(如2023-2024-1-计算机基础与程序设计)这个作业要求在哪里<作业要求的链接>(如2023-2024-1计算机基础与程序设计第八周作业)这个作业的目标<计算机科学概论......
  • Educational Codeforces Round 13 E
    tilian最开始看错了以为是可以任意选择两人or选择一人胜出但题意是可以选择下一个擂主是谁考虑dp的话我们显然需要记录一个state以及当前擂主是谁转移就是dp[state][i]=max(dp[state][i],dp[state(1<<j)][j]*a[i][j]+dp[state(1<<i)]*a[j][i])意义是我们枚举他后一个交......
  • 力扣136
    136. 只出现一次的数字给你一个 非空 整数数组 nums ,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。你必须设计并实现线性时间复杂度的算法来解决此问题,且该算法只使用常量额外空间。思路①逐位异或②排序后找只出现一次的数复杂度思路②......
  • 前端学习笔记学习笔记第七十柒天-webpack源码分析13
        ......
  • 【第13章】网络安全漏洞防护技术原理与应用
    13.1网络安全漏洞概述13.1.1网络安全漏洞概念网络安全漏洞又称为脆弱性,简称漏洞。漏洞一般是致使网络信息系统安全策略相冲突的缺陷,这种缺陷通常称为安全隐患。安全漏洞的影响主要有机密性受损、完整性破坏、可用性降低、抗抵赖性缺失、可控制性下降、真实性不保等。根据已经......
  • 2023-2024-1 20231320 《计算机基础与程序设计》第八周学习总结
    2023-2024-120231320《计算机基础与程序设计》第八周学习总结作业信息这个作业属于哪个课程<班级的链接>(2023-2024-1计算机基础与程序设计)这个作业要求在哪里<作业要求的链接>(2022-2023-1计算机基础与程序设计第八周作业)这个作业的目标<自学《计算机基础与......
  • 前端页面部署之后刷新页面之后出现HTTP 错误 404.0 - Not Found错误问题解决
    前端页面部署能正常访问,但是一旦刷新页面就报如下错误:404.0-NotFound 解决办法:下载IISURL重写模版,并安装。下面为安装地址:URLRewrite:TheOfficialMicrosoftIISSite安装之后IIS中出现如下IIS重写模块:点击进去添加规则,添加空白规则:  配置好之后会自动生成we......
  • 20211316郭佳昊 《信息安全系统设计与实现(上)》 第十周学习总结 块设备I/O和缓冲区处理
    一、任务要求[1]知识点归纳以及自己最有收获的内容,选择至少2个知识点利用chatgpt等工具进行苏格拉底挑战,并提交过程截图,提示过程参考下面内容(4分)我在学****知识点,请你以苏格拉底的方式对我进行提问,一次一个问题核心是要求GPT:请你以苏格拉底的方式对我进行提问然后GPT就会......
  • 2023-2024 20231313《计算机基础与程序设计》第八周学习总结
    作业信息这个作业属于哪个课程2023-2024-1-计算机基础与程序设计)这个作业要求在哪里2023-2024-1计算机基础与程序设计第八周作业这个作业的目标功能设计与面向对象设计、面向对象设计过程、面向对象语言三要素、汇编、编译、解释、执行作业正文https://www.cnb......