Python 利用坏电脑进行迁移学习

Python 利用坏电脑进行迁移学习,python,neural-network,deep-learning,conv-neural-network,Python,Neural Network,Deep Learning,Conv Neural Network,我想用转移学习来分类图像。这是我第一次尝试使用迁移学习。我现在使用VGG16模型。由于我的数据与用于原始训练模型的图像非常不同,理论告诉我应该训练许多层,可能包括隐藏层 我的电脑有8GO ram,使用i5 2.40 Hz无gpu。我的数据集很小(3000个图像),但数据以矩阵形式存储在python内存中,而不是保存在文件夹中。几乎我所有的公羊都被这些图像吸引住了 原始VGG16模型有1.3亿个参数。如果我只考虑隐藏层的权重,并在最后创建两个新的(和小的,大小512和256)完全连接的层,我仍然有

我想用转移学习来分类图像。这是我第一次尝试使用迁移学习。我现在使用VGG16模型。由于我的数据与用于原始训练模型的图像非常不同,理论告诉我应该训练许多层,可能包括隐藏层

我的电脑有8GO ram,使用i5 2.40 Hz无gpu。我的数据集很小(3000个图像),但数据以矩阵形式存储在python内存中,而不是保存在文件夹中。几乎我所有的公羊都被这些图像吸引住了

原始VGG16模型有1.3亿个参数。如果我只考虑隐藏层的权重,并在最后创建两个新的(和小的,大小512和256)完全连接的层,我仍然有15M的参数需要训练,总共30m的参数

我实际上使用了224*224的图像大小,就像vgg16输入一样

我的电脑需要1小时30分。在10个纪元时,我的准确率很差(50%对90%,conv-net从头开始)

我的问题:

  • 电脑在X纪元之后崩溃了,我不知道为什么。可能是内存问题吗?因为当vgg开始训练1个历元时,其他历元只是重量调整,其他历元不应该影响记忆

  • 我应该解冻输入层以使用降维图像来减少记忆问题和训练时间吗?它不会影响太多的conv网络性能吗

  • 需要1h30计算具有15M可训练参数的1个历元是否正常?因为我仍然需要找到最佳的解冻层数,新的完全连接层的形状,学习率,OTP。。。在我看来,用我目前的通信资源在相当长的时间内优化迁移学习模式是不可能的

你有什么关于迁移学习的建议吗


谢谢

< P>没有专门的迁移学习技巧,但是如果你缺乏计算能力,考虑过渡到云资源可能会有帮助。AWS、谷歌云、Azure或其他服务的价格非常合理

它们中的大多数还提供了一些免费资源,这些资源足以用于小型ML项目或学生任务。 值得注意的是:

  • 提供
  • AWS提供~
  • Azure笔记本电脑也是如此

这些服务中的大多数还提供免费的通用计算能力,您也可以在其上运行ML任务,但这可能需要一些额外的手动调整。

也许这有点帮助:。你的电脑不适合深度学习,这是一个数字。如何将数据集减少到随机1000张图像/与原始数据集相同的分布?也许这也能起到很好的作用。你的计算机可能因为过热而崩溃,所以试着监视你机器的温度(此外,如果温度超过某个特定值,计算机中有一些保护措施可以关闭或节流计算机或特定设备,如CPU)。如果内存已满,它可能会抛出错误(当GPU内存已满时会抛出错误,不知道GPU何时未使用)