【发布时间】:2019-07-03 07:21:16
【问题描述】:
我想使用迁移学习对图像进行分类。那是我第一次尝试使用迁移学习。我目前使用 VGG16 模型。由于我的数据与用于原始训练模型的图像非常不同,理论告诉我应该训练很多层,可能包括隐藏层。
我的电脑有 8GO 内存,使用 i5 2.40 Hz 没有 gpu。我的数据集很小(3000 张图像),但数据作为矩阵存储在 python 内存中,而不是保存在文件夹中。几乎我所有的内存都被这些图像占用了
原始 VGG16 模型有 1.3 亿个参数。如果我只取隐藏层的权重,并在最后创建 2 个新的(并且很小,大小为 512 和 256)的全连接层,我还有 15M 的参数要训练,总共 30m 的参数。
我实际上使用 224*224 的图像大小,如 vgg16 输入
我的电脑需要 1H30 1 epoch。在 10 个 epoch 时,我的准确率很差(50% vs 90% with conv net from scratch)。
我的问题:
X 纪元后计算机崩溃,我不知道为什么。会不会是内存问题?既然vgg开始训练1个epoch,其他epoch只是权重调整,其他epoch应该不会影响内存吧?
我应该解冻输入层以使用降维图像来减少内存问题和训练时间吗?不会对conv net性能影响太大?
用 15M 可训练参数计算 1 个 epoch 需要 1h30 是否正常?由于我仍然需要找到解冻的最佳层数、新的全连接层的形状、学习率、otpimizer ......在我看来,用我目前的计算资源在相当长的时间内优化迁移学习模型是不可能的
您对迁移学习有什么建议吗?
谢谢
【问题讨论】:
-
也许这会有所帮助:towardsdatascience.com/…。您的计算机并不是真正用于深度学习的,这是一些数字。如何将您的数据集随机减少 1000 张图像/与原始数据集相同的分布?也许这也很好用
-
您的计算机可能由于过热而崩溃,因此请尝试注意您的机器的温度(此外,如果计算机或特定设备(如 CPU)在温度超过特定值)。如果有内存满的问题,应该会报错(GPU内存满的时候会报错,不知道GPU什么时候没用)
标签: python neural-network deep-learning conv-neural-network