局部最小值,全局最小值,3D马鞍面(复现),鞍点(saddle point)

#11.1.2深度学习中的优化挑战
#局部最小值
import numpy
import matplotlib.pyplot as plt
from matplotlib.pyplot import gca
import torch
def annotate(text,xy,xytext,**kwargs):
    return gca().annotate(text, xy=xy, xytext=xytext,arrowprops=dict(facecolor='black',shrink=0.05),)#关键字参数arrowprops中提供箭头属性字典来绘制从文本到注释点的箭头,
def f(x):
    return (x * numpy.cos(numpy.pi * x))

#x=numpy.arange(-1.0,2.0,0.01)
x=torch.arange(-1.0,2.0,0.01)
plt.xlim(-1,2)
plt.ylim(-1.5,2)
plt.xlabel('x')
plt.ylabel('f(x)')
plt.plot(x,f(x))
plt.grid()
annotate('local minimum',(-0.3,-0.25),(-0.77,-1.0))
annotate('global minimum',(1.1,-0.95),(0.6,0.8))
plt.show()

#马鞍面
import numpy
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import torch
#定义马鞍面的参数范围
x,y=numpy.meshgrid(torch.linspace(-1.0,1.0,101),numpy.linspace(-1.0,1.0,101))
#计算马鞍面的参数范围
z=x**2-y**2
#创建一个3D图形对象
fig=plt.figure()
ax=fig.add_subplot(111,projection='3d')
ax.plot_surface(x,y,z,cmap='viridis')
#设置坐标轴范围
ticks=[-1.0,0,1.0]
plt.xticks(ticks)
plt.yticks(ticks)
ax.set_zticks(ticks)
#设置坐标轴标签
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_zlabel('z')
plt.show() 

鞍点

import numpy
from matplotlib.pyplot import gca
import matplotlib.pyplot as plt
import torch
x=torch.arange(-2.0,2.0,0.01)
def annotate(text,xy,xytext):
    return gca().annotate(text, xy=xy, xytext=xytext,arrowprops=dict(facecolor='black',shrink=0.05),)#关键字参数arrowprops中提供箭头属性字典来绘制从文本到注释点的箭头,
def f(x):
    return x**3
plt.xlim(-2,2)
plt.ylim(-10,10)
plt.xlabel('x')
plt.ylabel('f(x)')
plt.plot(x,f(x))
plt.grid()
annotate('saddle point',(0,-0.2),(-0.52,-5.0))
plt.show()

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值