《深度学习入门基于python的理论与实践》书中源码sorted(results_val.items(), key=lambda x:x[1][-1])详解

本文详细解读了《深度学习入门基于python的理论与实践》书中的一段代码,该代码用于在训练过程中寻找最优的学习率和权值衰减系数。通过sorted()函数和lambda表达式,对验证集的结果进行排序,从而确定最佳超参数组合,以提高模型在验证集上的准确率。最后,展示了如何调整代码以展示结果图表。
摘要由CSDN通过智能技术生成

这行代码出现在6.5.3 超参数的最优化实现中,试图寻找学习率(SGD作为optimizer)与权值衰减系数(用于防止过拟合)这两个组合的范围,先上代码:

# coding: utf-8
import sys, os
sys.path.append(os.pardir)  # 为了导入父目录的文件而进行的设定
import numpy as np
import matplotlib.pyplot as plt
from dataset.mnist import load_mnist
from common.multi_layer_net import MultiLayerNet
from common.util import shuffle_dataset
from common.trainer import Trainer

(x_train, t_train), (x_test, t_test) = load_mnist(normalize=True)

# 为了实现高速化,减少训练数据
x_train = x_train[:500]
t_train = t_train[:500]

# 分割验证数据
validation_rate = 0.20
validation_num = int(x_train.shape[0] * validation_rate)
x_train, t_train = shuffle_dataset(x_train, t_train) #先将训练集随机打乱
x_val = x_train[:validation_num]
t_val = t_train[:validation_num]
x_train = x_train[validation_num:]
t_train = t_train[validation_num:]


def __train(lr, weight_decay, epocs=50):
    '''
    epocs:跑几个epocs组,总迭代数为:
    self.iter_per_epoch = max(self.train_size / mini_batch_size, 1)
    (相当于5次迭代一个epoches)
    self.max_iter = int(epochs * self.iter_per_epoch) 
    (共迭代250次)
    '''
    network = MultiLayerNet(input_size=784, 
                            hidden_size_list=[
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值