pytorch学习--线性模型

一般步骤:

1.准备数据集

2.模型选择,设计

3.训练

2.应用-新数据,预测

知道结果的训练--监督学习。

pytorch学习--线性模型_第1张图片pytorch学习--线性模型_第2张图片

根据训练集,易得为线性模型。 

pytorch学习--线性模型_第3张图片

 利用w,d评估误差.设:损失函数为 

pytorch学习--线性模型_第4张图片

例题代码打了,没保存,不重新打了。’

以下是作业。

出现了两个问题:1.forward函数计算的x里的w,d需不需要重新迭代  2.3d画图中z需要二维

解决:1——不需要,因为w,d在下面这句中已经变成矩阵了。

X, Y = np.meshgrid(w_try, b_try)

2 ——这里的二维指的是数据类型的二维。

#引用库,工具
from matplotlib import pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
import matplotlib.pyplot as plt 

#创建画布,3d空间
fig = plt.figure()
ax1 = plt.axes(projection='3d')

#原始数据
x=[1.0,2.0,3.0]
y=[3.0,5.0,7.0]

#结果
def forward(x):
    return x*X+Y

#损失函数
def loss(x,y):
    y_pre=forward(x);
    return (y_pre-y)*(y_pre-y)

#假设w,b的取值
mse=[]
w_try=np.arange(0.0,4.1,0.1)
b_try=np.arange(-1.0,3.1,0.1)


X, Y = np.meshgrid(w_try, b_try)#返回坐标矩阵
sum=0
for i,j in zip(x,y):
    y_pred=forward(i)
    loss_val=loss(i,j)
    sum+=loss_val
    mse.append(sum/3)   
#制图
ax1.plot_surface(w_try,b_try,sum/3,cmap='rainbow')
plt.show()            

pytorch学习--线性模型_第5张图片

 

补充知识:

1.

from matplotlib import pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
import matplotlib.pyplot as plt 

NumPy 的全称是“ Numeric Python”,它是 Python 的第三方扩展包,主要用来计算、处理一维或多维数组。
NumPy 提供了多种数据结构,这些数据结构能够非常契合的应用在数组和矩阵的运算上。Matplotlib 是 Python 的绘图库,它经常与 NumPy 一起使用,从而提供一种能够代替 Matlab 的方案。

2.3d画图的命令
 

fig = plt.figure()
ax1 = plt.axes(projection='3d')
plt.plot()#只有2维

3.numpy.meshgrid()

生成坐标矩阵

使用 meshgrid 方法,你只需要构造一个表示 x 轴上的坐标的向量和一个表示 y 轴上的坐标的向量; 然后作为参数给到 meshgrid(), 该函数就会返回相应维度的两个矩阵;

例如,你想构造一个 2 行 3 列的矩阵网格点, 那么 x 生成一个 shape(3,) 的向量, y 生成一个 shape(2,) 的向量, 将 xy 传入 meshgrid(), 最后返回的 X , Y 矩阵的 shape(2,3)

3.网格

plt.grid(True) # 显示背景的网格线
plt.grid(False) # 关闭背景的网格线
ax.grid(color=’r’, linestyle=’-‘, linewidth=2) # 设置背景网格线的样式

 4.生成矩阵or数组

list = []
for item in data:
list.append(item)
list=np.array(list)

2.np.nditer()迭代器

可以实现多元在不同数组中迭代

6.‘list‘ object has no attribute ‘ndim‘--错误为数据类型不对

7.Expected indentation of 6 spaces ——缩进不对

8.降维函数

np.reshape(A,(a,b))

  • A:需要被重新组合的数组
  • (a,b): 各个维度的长度。比如要想展开成二维数组,那么(a,b)就是展开成a行b列。

9.可能是版本问题,这个函数用不了。

plot_trisurf 

你可能感兴趣的:(pytorch,学习,深度学习)