学习笔记之——pytorch

版权声明: https://blog.csdn.net/gwplovekimi/article/details/83472147

本博文为本人自学pytorch时写的一系列学习笔记,仅仅供本人学习记录用哈~

目录

python

pytorch


python

列表为[]

元组为()——不可修改元素的列表

字典{}——键值对。

在定义py函数中:可以传递任意数量的实参。一个星号(“*”)代表传入元组、两个星号(“**”)代表字典

类:

面向对象编程~

pytorch

Tensor是张量,是一个多维的矩阵。pytorch中的tensor可以与numpy的ndarray(N-dimensional array object)互相转换。唯一的不同点仅仅是pytorch可以在GPU上运行,而numpy的ndarray只能在CPU上运行。

Tensor与numpy.ndarray之间的转换

numpy_=tensor.numpy()

torch_=torch.from_numpy(numpy_)

通过tensor.cuda(),可以实现tensor放在GPU上。通过torch.cuda.is_available()来检测是否支持GPU

(torch的0.4.0版本已经将 Variable 和 Tensor合并,统称为 Tensor)

一维线性回归代码实现

import torch
import numpy as np
import torch.nn as nn
import torch.optim as optim
import matplotlib.pyplot as plt
 
#numpy train
x_train=np.array([[3.3],[4.4],[5.5],[6.71],[6.93],[4.168],
				  [9.779],[6.182],[7.59],[2.167],[7.042],
				  [10.791],[5.313],[7.997],[3.1]],dtype=np.float32)

y_train=np.array([[1.7],[2.76],[2.09],[3.19],[1.694],[1.573],
				  [3.366],[2.596],[2.53],[1.221],[2.827],
				  [3.465],[1.65],[2.904],[1.3]],dtype=np.float32)

#numpy.array to tensor
x_train=torch.from_numpy(x_train)
y_train=torch.from_numpy(y_train)

class LinearRegression(nn.Module):
	def __init__(self):
		super(LinearRegression, self).__init__()
		self.linear=nn.Linear(1,1)#input and output is 1 dimension

	def forward(self,x):
		out=self.linear(x)
		return out


if torch.cuda.is_available():
	model=LinearRegression().cuda()
else:
	model=LinearRegression()



#define the optimer
criterion=nn.MSELoss()
optimizer=optim.SGD(model.parameters(),lr=1e-3)	

num_epochs=1000
for epoch in range(num_epochs):
	if torch.cuda.is_available:
		inputs=x_train.cuda()
		target=y_train.cuda()

	else:
		inputs=x_train
		target=y_train

	#forward
	out=model(inputs)
	loss=criterion(out,target)

	#backward
	optimizer.zero_grad()#the grad set to zero
	loss.backward()#backward
	optimizer.step()#One step parameter update through gradient

	if(epoch+1) % 20 ==0:
		print('Epoch[{}/{}],loss:{:.6f}'.format(epoch+1,num_epochs,loss.data[0]))

#prediction
model.eval()
model.cpu()
predict=model(x_train)
predict=predict.data.numpy()
plt.plot(x_train.numpy(),y_train.numpy(),'ro',label='Original data')
plt.plot(x_train.numpy(),predict,label='fitting line')
plt.show()


运行结果如下:

猜你喜欢

转载自blog.csdn.net/gwplovekimi/article/details/83472147