pytorch入门3.0构建分类模型再体验(准备数据)
pytorch入门3.0构建分类模型再体验(准备数据)
pytorch入门3.1构建分类模型再体验(模型和训练)
pytorch入门3.2构建分类模型再体验(批处理)
上回我们用pytorch完成了回归模型,为了进一步熟练,我们在用类似的方法,在做一做分类问题。
首先,准备数据。在此我们随机生成了1000个数,它的区间为\([-5,5]\)。然后,我们把它们整理成500个数值对。令groundtruth为:如果每对的两个数值同号就标记为1,异号标记为0。比如一个数值对\((2.1,-2.3)\),那么他就属于第0类,数值对\((2.1,2.3)\)属于第一类。
import torch
# preparing the dataset
x = torch.unsqueeze((torch.rand(1000)-0.5)*10,dim=0).reshape(-1,2) # 随机生成1000个数值,组织成500个数值对
y = torch.LongTensor([1 if _x[0]*_x[1]>=0 else 0 for _x in x]) # 为每个数值准备类别标签
为了明显期间,我们还是把上述的数值对画到坐标系中,其中△是一类、○是一类,可以看到在第一、三象限中的点是一类,而第二、四象限的点是一类。
import matplotlib.pyplot as plt
%matplotlib inline
plt.figure(figsize=(18,8))
marker = ['^','o']
colors = ['c','g']
plt.subplot(1,2,1)
for x,xx,y in zip(x_train[:,0],x_train[:,1],y_train):
plt.scatter(x,xx,marker=marker[int(y)],color=colors[0],linewidths=int(y)+1)
plt.subplot(1,2,2)
for x,xx,y in zip(x_test[:,0], x_test[:,1],y_test):
plt.scatter(x,xx,marker=marker[int(y)],color=colors[1],linewidths=int(y)+1)
plt.show()
接下来的任务就是要把三角形和圆形的两类数据划分开,我们稍事休息,下节再来讲。