动手实现Logistic回归

本文记录动手实现Logistic回归,本人刚刚接触深度学习,有错误的地方恳请各位大佬指正。在实现的过程中参考了下面两篇的思路:
Pytorch实验一:从零实现Logistic回归和Softmax回归
pytorch实现 logistic 回归

从0实现 logistic 回归

import torch
import matplotlib.pyplot as plt 
import torch.nn as nn
import numpy as np
import random

生成数据

随机生成实验所需要的二分类数据集 𝑥1 和 𝑥2 ,分别对应的标签 𝑦1 和 𝑦2
torch.normal返回一个张量,包含从给定参数means,std的离散正态分布中抽取随机数。 均值means是一个张量,包含每个输出元素相关的正态分布的均值。

n_data = torch.ones(50, 2) # 数据的基本形态
x1 = torch.normal(2 * n_data, 1) # shape=(50, 2)
y1 = torch.zeros(50) # 类型0 shape=(50, 1)
x2 = torch.normal(-2 * n_data, 1) # shape=(50, 2)
y2 = torch.ones(50) # 类型1 shape=(50, 1)
# 注意 x, y 数据的数据形式一定要像下面一样 (torch.cat 是合并数据),这样就构建出来一个分类特征明显的数据集
features = torch.cat((x1, x2), 0).type(torch.FloatTensor)
label = torch.cat((y1, y2), 0).type(torch.FloatTensor)

◼ 使用matplotlib将所构造的数据可视化

#x.data.numpy()[:, 0], x.data.numpy()[:, 1]表示输入x的两列
plt.scatter(features.data.numpy()[:, 0], features.data.numpy()[:, 1], c=label.data.numpy(), s=100, lw=0, 
cmap='RdYlGn')
plt.show()

在这里插入图片描述

读取数据

在模型训练的时候,需要遍历数据集并不断读取小批量的数据样本。这里本实验定义
一个函数 𝐝𝐚𝐭𝐚_𝐢𝐭𝐞𝐫() 它每次返回 𝒃𝒂𝒕𝒄𝒉_𝒔𝒊𝒛𝒆 (批量大小)个随机样本的特征和标签。

def data_iter(batch_size, features, label):
    num_examples = len(features)
    indices = list(range(num_examples))
    random.shuffle(indices) # 样本的读取顺序是随机的
    for i in range(0, num_examples, batch_size):
        j = torch.LongTensor(indices[i: min(i + batch_size, num_examples)]) # 最后一次可能不足一个batch
        yield features.index_select(0, j), label.index_select(
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

江鸟阁长

你的支持是我更新的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值