PyTorch实现简单的数字分类

使电脑学会0.1-0.5为一类,大于0.5为一类


import torch
import numpy as np
import matplotlib.pyplot as plt
from torch.autograd import Variable


train_x_1=torch.linspace(0.1,0.5)  #数字归一化,非常重要

train_x_2=torch.linspace(0.5,1.0)  #数字归一化,非常重要

train_x=torch.cat((train_x_1,train_x_2))
print(train_x.size())
train_x=torch.unsqueeze(train_x,1)
print(train_x.size())




#print(train_x)

label_1=torch.zeros_like(train_x_1).type(torch.LongTensor)
label_2=torch.ones_like(train_x_2).type(torch.LongTensor)
label=torch.cat((label_1,label_2))
#label=torch.unsqueeze(label,1)


model=torch.nn.Sequential(
    torch.nn.Linear(1,5),
    torch.nn.Linear(5,2),

    torch.nn.Softmax()
)

criterion=torch.nn.CrossEntropyLoss()
optimizer=torch.optim.SGD(model.parameters(),lr=0.1)

train_x=Variable(train_x)
label=Variable(label)
for echo in range(10000):
    print(train_x.data.size())

    predict=model(train_x)
    loss=criterion(predict,label)
    optimizer.zero_grad()
    loss.backward()
    optimizer.step()

    print('Loss:',loss)

for echo in range(200):
    x=float(input('输入测试数据'))
    x=torch.FloatTensor([[x]])
    x=Variable(x)
   # x=torch.unsqueeze(x,0)
    print('预测结果:',model(x))





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值