mini_batch学习

概念

学习的指标

如何得到所有学习数据的损失函数的总和

  • 一个一个计算?
  • 如果数据量大的话,费时费力

太难受了吧

从训练数据中获取小数据mini-batch

对每个小数据进行批量学习

首先读入mnist数据集

import numpy as np

# 实现从训练数据中随机选择指定个数的数据的代码

import os, sys

sys.path.append(os.pardir)
from dataset.mnist import load_mnist  # 表示从dataset目录中的mnist.py文件中导入想要的东西

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

print(x_train.shape)
print(t_train.shape)

D:\ANACONDA\envs\pytorch\python.exe C:/Users/Administrator/Desktop/DeepLearning/ch04/wgw_test.py
(60000, 784)
(60000, 10)

Process finished with exit code 0

  • 得到了训练数据的个数
  • 训练输入的维数
    • 28*28 784个
    • 其实这个也就是输入层的神经元的个数
  • t表示标签数据(监督数据)
    • 是10维的

现在开始随机获取10个数据

使用numpy中的random函数来帮个忙

代码

train_size = x_train.shape[0]
batch_size = 10
batch_mask = np.random.choice(train_size, batch_size) # choice函数返回的是ndarray类型的数据
# print(type(batch_mask))

x_batch=x_train[batch_mask]
t_batch=x_train[batch_mask]

相当于选取了一个随机数种子

  • 得到的是种子的索引
  • 然后根据索引在数组中拿到对应的值

结果

mini_batch学习_第1张图片

和电视台的收视率一样

  • 通过随机选择的小批量数据作为全体训练数据的近似值

监督数据的理解

监督数据就是用来考察训练数据的呗

完整代码

import numpy as np

# 实现从训练数据中随机选择指定个数的数据的代码

import os, sys

sys.path.append(os.pardir)
from dataset.mnist import load_mnist  # 表示从dataset目录中的mnist.py文件中导入想要的东西

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

# 让我来康康训练数据和监督数据的规模
# print(x_train.shape)
# print(t_train.shape)

train_size = x_train.shape[0]
batch_size = 10
batch_mask = np.random.choice(train_size, batch_size) # choice函数返回的是ndarray类型的数据
# print(type(batch_mask))

x_batch=x_train[batch_mask]
t_batch=x_train[batch_mask]

你可能感兴趣的:(深度学习,batch,学习,python)