提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
自学ing
刘二大人的pytorch1025
一、代码和导入包
https://blog.csdn.net/bit452/article/details/109627469
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]
def forward(x):
return x*w
def loss(x, y):
y_pred = forward(x)
return (y_pred - y)**2
# 穷举法
w_list = []
mse_list = []
for w in np.arange(0.0, 4.1, 0.1):
print("w=", w)
l_sum = 0
for x_val, y_val in zip(x_data, y_data):
y_pred_val = forward(x_val)
loss_val = loss(x_val, y_val)
l_sum += loss_val
print('\t', x_val, y_val, y_pred_val, loss_val)
print('MSE=', l_sum/3)
w_list.append(w)
mse_list.append(l_sum/3)
plt.plot(w_list,mse_list)
plt.ylabel('Loss')
plt.xlabel('w')
plt.show()
二、使用步骤
1.引入库
代码如下(示例):
import matplotlib.pyplot as plt
2.数据结果
最后跑出来了
问题描述
今天在使用matplotlib绘3D图像时,运行图像内容竟然显示为空:
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import matplotlib
# 3D图
matplotlib.rcParams['axes.unicode_minus']=False
# 创建窗口
fig=plt.figure()
# 在该窗口中创建3d绘图对象
ax=Axes3D(fig) #这里需要改
fig.add_axes(ax)
# 创建点的x和y坐标数组
x=np.arange(-3,3,0.2)
y=np.arange(-3,3,0.2)
# 网格化处理
x,y=np.meshgrid(x,y)
# 计算某个点到原点的距离为半径
r=np.sqrt(x**2+y**2)
# 以半径为基准,求它的正弦值为点的z轴坐标
z=np.sin(r)
# 绘制图像
ax.plot_surface(x,y,z,rstride=3,cstride=1,cmap="hot")
# 底部的投影
ax.contour(x,y,z, zdir = 'z', offset = -1, cmap = plt.get_cmap('rainbow'))
# 设置z轴的维度,x,y类似
ax.set_zlim(-2, 2)
plt.show()
运行结果:
原因分析:
很奇怪的事,在同学电脑运行我的程序完全没有问题,因此我仔细想了一下。应该也是由于版本的问题,至此我仍未解决问题,我又询问了师兄。师兄给我提供了另外一种思路。也就是说,老师的课程录制的比较久远,而我是版本又比较新,所以给了我一种新的编写方案。
#ax3d = Axes3D(fig) #原代码
ax3d = fig.add_axes(Axes3D(fig)) #新代码
至此,问题解决
总结
这里对文章进行总结:
浅记录实验代码实现过程;
分析结果代码数据;
学习经历;