[2023.07.24] pytorch basics:transforms,models

1. transforms

(1)ToTensor:

将PIL或ndarray图片转化为tensor. ndarray in (H x W x C) in the range [0, 255] to a torch.FloatTensor of shape (C x H x W) in the range [0.0, 1.0]

(2).Lambda transform:

使用Lambda class wrapping any function to transform

from torchvision.transforms import ToTensor, Lambda
target_transform = Lambda(lambda y: torch.zeros(
    10, dtype=torch.float).scatter_(dim=0, index=torch.tensor(y), value=1))

2.model

(1)model device

device=(
    "cuda"
    if torch.cuda.is_available()
    else "mps"
    if torch.backends.mps.is_available()
    else "cpu"
)

(2) define class

class NeuralNetwork(nn.Module):
    def __init__(self):#初始化模块
        super().__init__()#调用父类nn.Module的初始化函数
        self.flatten = nn.Flatten()
        self.linear_relu_stack = nn.Sequential(
            nn.Linear(28*28, 512),
            nn.ReLU(),
            nn.Linear(512, 512),
            nn.ReLU(),
            nn.Linear(512, 10),
        )

    def forward(self, x):#数据操作
        x = self.flatten(x)#转化为一维数据
        logits = self.linear_relu_stack(x)
        return logits

(3)创建实例,把模型移动到device

Model=NeuralNetwork().to(device)
print(model)

(4)输出结果

x=torch.rand(1,28,28,device)
logits=model(x)
predict_probilities=nn.Softmax(dim=1)(logits)
y_predicted=predict_probabilities.argmax(axis=1)

(5) model layers

a. 查看

可以通过直接打印模型查看模型结构,

或打印模型输出尺寸,

或打印利用model.named_parameters()打印层名称及参数迭代器

for name, param in model.named_parameters():
    print(f"name{name}|parameter size{param.size()}|Values param[:2]")
b.nn.Sequential

是模型模块的有序容器,如果数据总是按照相同的顺序输入模块,则可使用

c.nn.ReLU

../_images/ReLU.png

../_images/ReLU.png

用在线性模块之间,增加模型的非线性。

d.nn.Linear

y=xA^T+b (wieght and bias)

e.nn.Softmax(dim)(input)

把输入映射到0-1区间,并且所有概率之和为1.

f.nn.Flatten

dim=0 的数值为minibatch的维度保留,其他压缩为1d。

-----

1.numpy argmax(axis)

返回ndarray中最大值的下标,如果参数axis给出,则在特定方向上运行该函数。

3. torch rand(size)

输出【0,1)区间,满足size

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值