这行代码出现在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=[