PyTorch学习笔记(18)优化器(一)

本文是PyTorch学习笔记的第十八篇,主要介绍优化器的作用和原理,包括基本属性如defaults、state、param_groups和_step_count,以及关键方法如zero_grad()和step(),讨论了张量梯度管理及其在模型训练过程中的应用。
摘要由CSDN通过智能技术生成

优化器

pytorch的优化器:管理并更新模型中科学系参数的值,使得模型输出更接近真实标签
导数:函数在制定坐标轴上的变化
方向导数:指定方向上的变化率
梯度:一个向量,方向为方向导数取得最大值的方向

基本属性

defaults 优化器超参数
state 参数的缓存 如momentum的缓存
pram_groups 管理的参数组
_step_count 记录更新次数,学习率调整中使用

基本方法

zero_grad() 清空所管理参数的梯度
pytorch特性:张量梯度不自动清零
step() 执行一步更新
add_param_group() 添加参数组
state_dict() 获取优化器当前状态信息字典
load_state_dict() 加载状态信息字典



# -*- coding: utf-8 -*-

import os
import numpy as np
import torch
import torch.nn as nn
from torch.utils.data import DataLoader
import torchvision.transforms as transforms
import torch.optim as optim
from matplotlib import pyplot as plt
from model.lenet import LeNet
from tools.my_dataset import RMBDataset
from tools.common_tools import transform_invert, set_seed

set_seed(1)  # 设置随机种子
rmb_label = {
   "1": 0, "100": 1}

# 参数设置
MAX_EPOCH = 10
BATCH_SIZE = 16
LR = 0.01
log_interval = 10
val_interval = 1

# ============================ step 1/5 数据 ============================

split_dir = os.path.join("data", "rmb_split")
train_dir = os.path.join(split_dir, "train")
valid_dir = os.path.join(split_dir, "valid")

norm_mean = [0.485, 0.456, 0.406]
norm_std = [0.229, 0.224, 0.225]

train_transform = transforms.Compose([
    transforms.Resize((32, 32)),
    transforms.RandomCrop(32, padding=4),
    transforms.RandomGrayscale(p=0.8),
    transforms.ToTensor(),
    transforms.Normalize(norm_mean, norm
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值