深度学习基础理论 - 1)batch_sizes和epoch参数差异及关系

一、理论差异

batch_sizes 代表1次进行计算梯度误差delta的样本数目,计算之后再进行参数迭代。

epoch 完成了所有的训练输入的小批量训练,称为完成了一次训练迭代。然后就会开始一次新的迭代。

如下,273 指的是一次迭代用到的batch_sizes 的个数,这里样本总数为 17469 ,batch_sizes 设定的为 64,所以17469/64= 272.9 ,即 273。可以看到以下是进行了50次epoch,每次都会对于所有训练输入进行一轮批量训练。

二、实现情况

keras 涉及的batch_sizes 的数据处理:由于直接model.fit输入全量数据,可能会有内存不支持的情况。所以,这里需要事先进行数据的batch_size的处理,具体应用tensorflow的Sequence函数。

可参考链接:tensorflow.keras.utils.Sequence的使用_会飞de鱼~的博客-CSDN博客

可参考代码:

from tensorflow.keras.utils import Sequence
import numpy as np   
class DataGenerator(Sequence):
    def __init__(self, x_set, y_set, batch_size):
        self.x, self.y = x_set, y_set
        self.batch_size = batch_size
    def __len__(self):
        return int(np.ceil(len(self.x) / float(self.batch_size)))
    def __getitem__(self, idx):
        batch_x = self.x[idx * self.batch_size:(idx + 1) * self.batch_size]
        batch_y = self.y[idx * self.batch_size:(idx + 1) * self.batch_size]
        return tf.convert_to_tensor(batch_x), tf.convert_to_tensor(batch_y)
        
train_gen = DataGenerator(trainx_lt_tfidf, label_one_trainy_lt, 64)

猜你喜欢

转载自blog.csdn.net/qq_30330061/article/details/127536443