【Datawhale夏令营】第二期 Deepfake Task2学习总结

 在Task2中,对深度学习的概念和一般步骤有了一定了解。

深度学习概念

深度学习是机器学习的分支,二者在特征的处理上有明显区别。

机器学习需要对特征进行预处理,即“特征工程”。而深度学习在神经网络的架构中,自动学习有用的特征。深度学习模型能实现端对端的学习,即由输入直接得到输出,无需中间步骤。

深度学习的应用:ChatGPT

深度学习局限性:不能解决所有问题。需要大量的高质量数据来训练模型。

深度学习的一般步骤

  1. 准备小批量数据,以及对应的正确标签
  2. 将模型设置为训练模式
  3. 将训练数据输入到神经网络中,计算网络的输出(前向传播)
  4. 用损失函数计算当前数据预测结果与真实标签的差异,即损失(计算损失)
  5. 通过反向传播计算每个参数的梯度(反向传播)
  6. 根据梯度,更新神经网络参数(参数更新)
  7. 多次迭代以上步骤,更新参数(多轮迭代,epoch)

深度学习与迁移学习

迁移学习是一种机器学习技术,将已经从一个任务上学习到的知识(模型参数、特征表示等)应用到另一个相关任务上。这种技术对于数据稀缺的情况也能表现出色,特别有用。

通常使用在大规模数据集上预训练的模型作为起点,比如在ImageNet数据集上预训练的卷积神经网络(CNN),在这个模型基础上,用少量标记数据对模型进行微调,就可能适应新任务。

ImageNet包含超过1400万张注释过的图像,是深度学习模型训练和评估的理想数据集。用其训练出的模型具有鲁棒性。用在这个数据集上训练好的模型作为起点,在新任务中再微调参数,通常可以有出色的表现。baseline中就用了这种迁移学习的方法

import timm
model = timm.create_model('resnet18', pretrained=True, num_classes=2)
model = model.cuda()

第二行,就用了"resnet18'这个预训练好的神经网络模型,"pretrained=True"表示使用在ImageNet上预训练的权重,num_classes=2表示模型的输出层被修改为有2个类别的输出,以适应二分类任务,通过model = model.cuda()将模型移动到GPU上进行加速。

常见的图像分类网络

  • AlexNet,https://en.wikipedia.org/wiki/AlexNet
  • ResNet,https://en.wikipedia.org/wiki/Residual_neural_network

  • EfficientNet,https://paperswithcode.com/method/efficientnet

jupyter notebook问题小结

为了节省免费时长,我将示例代码https://www.kaggle.com/code/finlay/deepfake-ffdi-ch2/下载到了本地,用jupyter notebook运行,但运行过程中有一些报错,总结如下:

1. torch库报错

这一块会报错 "torch has no attribute tensor",后来发现是jupyter notebook自带的kernel有问题,更改为电脑本地的python.exe就没有问题了,更改kernel方法如下:

2. matplotlib报错

红色为报错,绿色是解决方案

3. wget报错

方法如下:

bxx​​​​​​​Debug | ‘wget‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件。_wget' 不是内部或外部命令,也不是可运行的程序 或批处理文件。-CSDN博客

  • 13
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值