如何解决jupyter notebook释放内存和显存的问题?

    我发现在使用jupyter notebook导入数据和训练时,似乎在程序运行时已经导入的数据就算后续没用似乎也没有被释放,如果需要释放就得重启内核,这样之前训练得到的模型也会被清空释放,如何解决这个问题呢?
    具体来说,我编写了一个全连接神经网络,在训练的data iter结束后,在同一个epoch的循环中继续使用data iter对验证集进行测试,然而我发现jupyter notebook在训练结束后并没有释放显存,于是一开始验证,我的显存就就变成双倍占用,立马溢出。
    除此之外,我还想问一下,如果我有一个比较大的数据集,每次想从硬盘内导入一部分数据训练若干个epoch,结束后换一部分数据训练,那么我如何通过jupyter notebook在内存中将之前的数据清除呢?