
第 6章 与学习相关的技巧
196
训练数据用于参数(权重和偏置)的学习,验证数据用于超参数的性
能评估。为了确认泛化能力,要在最后使用(比较理想的是只用一次)
测试数据。
根据不同的数据集,有的会事先分成训练数据、验证数据、测试数据三
部分,有的只分成训练数据和测试数据两部分,有的则不进行分割。在这种
情况下,用户需要自行进行分割。如果是
MNIST
数据集,获得验证数据的
最简单的方法就是从训练数据中事先分割 20
%
作为验证数据,代码如下所示。
(x_train, t_train), (x_test, t_test) = load_mnist()
#
打乱训练数据
x_train, t_train = shuffle_dataset(x_train, t_train)
#
分割验证数据
validation_rate = 0.20
validation_num = int(x_train.shape[0] * validation_rate)
x_val = x_train[:validation_num]
t_val = t_train[:validation_num]
x_train = x_train[validation_num:]
t_train = t_train[validation_num:]
这里,分割训练数据前,先打乱了输入数据和教师标签。这是因为数据
集的数据可能存在偏向(比如,数据从“0”到“ 10”按顺序排列等)。这里使
用的
shuffle_dataset
函数利用了
np.random.shuffle ...