import torch
import torch.nn.functional as F
import matplotlib.pyplot as plt # torch.manual_seed(1) # reproducible # make fake data
n_data = torch.ones(100, 2)
x0 = torch.normal(2*n_data, 1) # class0 x data (tensor), shape=(100, 2)
y0 = torch.zeros(100) # class0 y data (tensor), shape=(100, 1)
x1 = torch.normal(-2*n_data, 1) # class1 x data (tensor), shape=(100, 2)
y1 = torch.ones(100) # class1 y data (tensor), shape=(100, 1)
x = torch.cat((x0, x1), 0).type(torch.FloatTensor) # shape (200, 2) FloatTensor = 32-bit floating
y = torch.cat((y0, y1), ).type(torch.LongTensor) # shape (200,1) LongTensor = 64-bit integer # The code below is deprecated in Pytorch 0.4. Now, autograd directly supports tensors
# x, y = Variable(x), Variable(y) # plt.scatter(x.data.numpy()[:, 0], x.data.numpy()[:, 1], c=y.data.numpy(), s=100, lw=0, cmap='RdYlGn')
# plt.show() class Net(torch.nn.Module):
def __init__(self, n_feature, n_hidden, n_output):
super(Net, self).__init__()
self.hidden = torch.nn.Linear(n_feature, n_hidden) # hidden layer
self.out = torch.nn.Linear(n_hidden, n_output) # output layer def forward(self, x):
x = F.relu(self.hidden(x)) # activation function for hidden layer
x = self.out(x)
return x net = Net(n_feature=2, n_hidden=10, n_output=2) # define the network
print(net) # net architecture optimizer = torch.optim.SGD(net.parameters(), lr=0.02)
loss_func = torch.nn.CrossEntropyLoss() # the target label is NOT an one-hotted plt.ion() # something about plotting for t in range(100):
out = net(x) # input x and predict based on x
loss = loss_func(out, y) # must be (1. nn output, 2. target), the target label is NOT one-hotted optimizer.zero_grad() # clear gradients for next train
loss.backward() # backpropagation, compute gradients
optimizer.step() # apply gradients if t % 2 == 0:
# plot and show learning process
plt.cla()
prediction = torch.max(out, 1)[1]
pred_y = prediction.data.numpy()
target_y = y.data.numpy()
plt.scatter(x.data.numpy()[:, 0], x.data.numpy()[:, 1], c=pred_y, s=100, lw=0, cmap='RdYlGn')
accuracy = float((pred_y == target_y).astype(int).sum()) / float(target_y.size)
plt.text(1.5, -4, 'Accuracy=%.2f' % accuracy, fontdict={'size': 20, 'color': 'red'})
plt.pause(0.1) plt.ioff()
plt.show()

最新文章

  1. WAP端 经验记录1
  2. PCA降维
  3. Asp.net Core的代码移植技巧,半天将SqlSugarORM转成Core
  4. strtol,strtoll,strtoul, strtoull字符串转化成数字
  5. Okhttp https
  6. 5.3.2 Eclipse集成开发环境的使用技巧
  7. 关于MyBatis的工作流程
  8. 软考之CPU的寻址方式
  9. aspx基础开始
  10. js中的3种弹出式消息提醒(警告窗口,确认窗口,信息输入窗口)的命令式
  11. intellij idea打jar包时的注意事项
  12. 实现input输入时智能搜索
  13. ML(2)--感知机
  14. Ubuntu 虚拟机支持与windows机器复制粘贴
  15. java 集合框架(四)Set
  16. Tomcat安装及问题排查方法
  17. Spring 中 SQL 的存储过程
  18. Oracle sql function LISTAGG
  19. JAVA8 之 Stream sorted() 示例
  20. Winscp 密钥登录

热门文章

  1. 树上对抗搜索 - 树形dp
  2. Java知识体系框架
  3. 【Java并发基础】加锁机制解决原子性问题
  4. Flask路由+视图补充
  5. double涉及大数据的时候会变成科学计数法
  6. [状压DP思路妙题]图
  7. Java并发关键字Volatile 详解
  8. 「 深入浅出 」集合List
  9. 批量解决win10图标上有两个蓝色箭头的方法
  10. selenium2-Python环境搭建