我在每个迷你批次中有300个回放记忆。我见过人们计算300个回放记忆的损失,但这对我来说并不是真的有意义。300个回放记忆来自非常不同的游戏状态,为什么将预测和目标之间的300个差异合并到一个值中是有意义的?当模型反向传播时,梯度是否被分成300个分支,每个分支对应于迷你批次中的一个条目?我的策略网络输出10个动作的概率分布,或者300 x 10张量,我的目标概率分布具有相同的形状。我想找出我的预测和目标之间的交叉熵损失。我想知道我是应该在300个大小为10的张量的预测目标对之间找到300个交叉熵损失,还
我有一个很大的数据集(大约400 so ),它由张量数据(shape is (600, 600, 10))组成,我想在将这个数据集输入到一个神经网络之前对它进行规范化,但是这个数据集不适合我的记忆,所以我想知道均值和标准差的增量更新公式是这里,但我不知道如何在张量情况下调整它们,因为我不是每个新的迭代步骤只有一个值,而是一个整体张量,而且我不能取这个新张量的平均值,因为平均值并不是整个数据集的平均值。
由于观察不能揭示整个状态,我需要使用递归神经网络进行强化,以便网络对过去发生的事情有某种记忆。为简单起见,我们假设使用LSTM。内置的shape LSTM需要向它提供shape Time x MiniBatch x Input D的一个PyTorch输入,它输出shape Time x MiniBatch x Output D的张量
为此,我的意图是使用中方程9和10中描述的GRU,解码来自情景记忆的输出( 和中的m^T)。该[batch_size x 1 x embedding_size]单元需要一个尺寸为[batch_size x answer_length x vocab_size]的三维张量作为输入,即从片段存储器m^T中得到的整形输出,并输出尺寸为[batch_size x answer_length x vocab_size]的三维张量。此外,我不确定如何实现它,使它接受一个固定大小的输入张量,并输出一个可变大小的张量(因
返回的张量仍然在CPU上,之后我必须手动调用.cuda(non_blocking=True)。如果不是这样的话,我们为什么要做引脚记忆呢?
a = np.memmap('..out of memory at /tmp/pip-req-build-58y_cjjl/aten/src/THC/THCCachingHostAllocator.cpp:296