学习内容:
- VPM模型训练
- LSTM与GRU比较
学习时间:
- 12.26 ~ 12.31
学习笔记:
VPM模型训练
1.所需环境
- Python 3.6
- Java 15.0.2
- PyTorch 1.2
- numpy, tqdm, h5py, scipy, six
2.训练步骤
2.1 不使用强化学习进行训练
注:代码中的 ’ * ’ 根据训练的数据集替换为 ‘activitynet’ 或 ‘charades’ 。
1.直接使用原数据集文件进行训练。
$ cd driver
$ CUDA_VISIBLE_DEVICES=0 python transformer.py
../results/*/dm.token/model.json ../results/*/dm.token/path.json --is_train
2.使用选择的关键帧进行训练,需要下载适用于关键帧选择的预训练文件。
$ cd driver
$ CUDA_VISIBLE_DEVICES=0 python transformer.py
../results/*/key_frames/model.json ../results/*/key_frames/path.json
--is_train --resume_file ../results/*/key_frames/pretrained.th
这种训练方式的结果会比方法1稍微逊色一些,但可以节省将近一半的时间。
未使用强化学习训练结果(方法1)
-
charades数据集
训练50个epoch后,模型在几种评估分数上的得分如下:
-
activitynet数据集
训练50个epoch后,模型在几种评估分数上的得分如下:
-
结果汇总
数据集名称 activitynet charades bleu4 0.1152 0.1710 cider 0.2575 0.2307 meteor 0.1576 0.1928 div1 0.6892 0.7848 div2 0.8330 0.8917 re4 0.0265 0.0011 模型在上述两个数据集上的得分与paper中记录的得分相比低了几个点,原因是还没有借助强化学习对模型进行强化训练,接下来就是利用强化学习对模型进行训练。
2.2 基于2.1保存的训练结果进行强化学习训练
$ cd driver
$ CUDA_VISIBLE_DEVICES=0 python transformer.py
../results/*/dm.token.rl/model.json ../results/*/dm.token.rl/path.json
--is_train --resume_file ../results/*/dm.token/model/epoch.*.th
强化学习训练结果
LSTM与GRU比较
图片来源:https://blog.csdn.net/dQCFKyQDXYm3F8rB0/article/details/82922386
GRU(gated recurrent unit, 门控循环单元) 是新一代的循环神经网络,与 LSTM 非常相似。与 LSTM 相比,GRU 去除掉了细胞状态,使用隐藏状态来进行信息的传递。它只包含两个门:更新门和重置门,其中:
- 更新门:类似于 LSTM 中的遗忘门和输入门。它决定了要忘记哪些信息以及哪些新信息需要被添加。
- 重置门:用于决定遗忘先前信息的程度。