线性回归的简单实现

本文是《动手学深度学习》的笔记

文章目录

  • 线性回归的简单实现
    • 生成随机数据集
    • 读取数据
    • 初始化模型参数
    • 定义模型
    • 定义损失函数
    • 定义优化算法
    • 训练模型
  • 线性回归的简洁实现
    • 生成数据集
    • 读取数据
    • 定义模型
    • 初始化模型参数
    • 定义损失函数
    • 定义优化算法
    • 训练模型

线性回归的简单实现

用了mxnet中的自动求导和数组结构

from mxnet import autograd, nd
import random

生成随机数据集

只有这个是用了自己造的数据,因为线性回归的数据比较简单 y = w X + b y=wX + b y=wX+b

  • 明确数据集的形状:1000*2,样本数量1000,特征2
  • nd.random.normal 随机正态分布生成1000个样本的特征
  • 根据随机的特征和真实wb计算真实labels
num_inputs = 2
num_examples = 1000
true_w = [2, -3.4]
true_b = 4.2
features = nd.random.normal(scale=1, shape=(num_examples, num_inputs))
labels = true_w[0]*features[:,0] + true_w[1]*features[:, 1] +true_b
labels += nd.random.normal(scale=1, shape=labels.shape )
# print(features[0],labels[0], features.shape)

读取数据

每次返回batch_size(批量大小)个随机样本的特征和标签。
函数体中前三行相当于打乱序号,list才可以被random.shuffle打乱
features是一个NdArray的实例,features.take挑出此下标的值

存在yield的函数相当于一个迭代器,必须按照调用迭代器的方法调用它。
程序运行到yield结束并返回yield后面的东西,第二次调用继续程序接下来的东西(在这里就是不间断运行for循环)

def data_iter(batch_size, features, labels):
    num_examples = len(features)
    indices = list(range

你可能感兴趣的:(深度学习,深度学习,机器学习,mxnet,gluon)