注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题
LitchiCheng的个人空间 https://home.eeworld.com.cn/space-uid-1003127.html [收藏] [复制] [分享] [RSS]
日志

一起读《动手学深度学习(PyTorch版)》- 线性神经网络 - 数据集处理

已有 164 次阅读2024-10-20 20:54 |个人分类:深度学习

协变量(covariate)、特征(feature)

    -> 特征的加权和或这说由权重组成的这种关系决定了目标怎么到达

    -> 权重决定了每个特征对于预测值的影响,更倾向于那种特征,像谁一点?

    -> 权重,是一组模型参数,需要质量的度量方式和提高模型预测质量的方法来寻找最佳参数

度量方式:损失函数(loss function)

    -> 量化目标实际和预测之间的差距,一般为非负数

    -> 回归问题损失函数一般用平方误差函数

提高方法:随机梯度下降

    -> 随机抽取小批量样本,不断地在损失函数递减地方向上更新参数减小误差

超参数(hyperparamter),都是训练时固定的参数

    -> 批量大小(batch size),每次小批量的样本数

    -> 学习率(learning rate),每次更新的系数

泛化(generalization)

    -> 一组能够在从未见过的数据上预测且误差较小的参数

预测(prediction)和推断(inference)

神经网络图

    -> 输入层的输入数可以称为特征维度(feature dimensionality)

    -> 当每个输入都和每个输出连接,称为全连接层(fully-connected layer)或者稠密层(dense layer)

softmax实践

使用FasionMNIST数据集,显示样本

import torch 
import torchvision
from torch.utils import data
from torchvision import transforms
import matplotlib.pyplot as plt

trans = transforms.ToTensor()
mnist_train = torchvision.datasets.FashionMNIST(root = "./data", train=True, transform=trans, download=True)
mnist_test = torchvision.datasets.FashionMNIST(root = "./data", train=True, transform=trans, download=True)

# print(len(mnist_train), len(mnist_test), mnist_train, mnist_train[0])
print(mnist_train[0][0].shape)

def get_fasion_mnist_labels(labels):
    # labels is num dict
    text_lables = ['t-shirt', 'trouser', 'pullover', "dress", "coat", "sandal", "shirt", "sneaker", "bag", "ankle boot"]
    return [text_lables[int(i)] for i in labels]

print(get_fasion_mnist_labels([1,2,4]))

def show_images(imgs, num_rows, num_cols, titles=None, scale=1.5):
    figsize = (num_cols * scale, num_rows * scale)
    _, axes = plt.subplots(num_rows, num_cols, figsize=figsize)
    # axes is n*m to 1*nm    
    axes = axes.flatten()
    for i, (ax, img) in enumerate(zip(axes, imgs)):
        if torch.is_tensor(img):
            ax.imshow(img.numpy())
        else:
            ax.imshow(img)
        ax.axes.get_xaxis().set_visible(False)
        ax.axes.get_yaxis().set_visible(False)
        if titles:
            ax.set_title(titles[i])
    plt.show()
    return axes

X, y = next(iter(data.DataLoader(mnist_train, batch_size=18)))
show_images(X.reshape(18,28,28), 2, 9 ,titles=get_fasion_mnist_labels(y))

 

使用内置的数据迭代器,进行随机读取小批量

train_iter = data.DataLoader(mnist_train, batch_size, shuffle=True, num_workers=get_dataloader_workers())
X1, y1 = next(iter(train_iter))
show_images(X1.reshape(batch_size, 28, 28), 16, 16, titles=get_fasion_mnist_labels(y1))

运行1次

 

再运行1次,和上一次的结果时不一样的

 

本文来自论坛,点击查看完整帖子内容。

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

热门文章