clip预训练好的模型下载地址,github上扒的

I find the pre-train model you provided in this
“RN50”:“https://openaipublic.azureedge.net/clip/models/afeb0e10f9e5a86da6080e35cf09123aca3b358a0c3e3b6c78a7b63bc04b6762/RN50.pt”, “RN101”:“https://openaipublic.azureedge.net/clip/models/8fa8567bab74a42d41c5915025a8e4538c3bdbe8804a470a72f30b0d94fab599/RN101.pt”, “RN50x4”:“https://openaipublic.azureedge.net/clip/models/7e526bd135e493cef0776de27d5f42653e6b4c8bf9e0f653bb11773263205fdd/RN50x4.pt”, “ViTB/32”:“https://openaipublic.azureedge.net/clip/models/40d365715913c9da98579312b702a82c18be219cc2a73407c4526f58eba950af/ViT-B-32.pt”,

  • 8
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
以下是一个基于PyTorch的CLIP知识蒸馏训练代码,包括KL散度loss、soft loss和hard loss: ```python import torch import torch.nn.functional as F from torch.utils.data import DataLoader from torchvision.datasets import CIFAR10 from torchvision.transforms import Compose, ToTensor, Normalize from models import StudentModel, TeacherModel def kl_div_loss(p, q): """ KL散度loss """ return F.kl_div(F.log_softmax(p, dim=1), F.softmax(q, dim=1), reduction='batchmean') def soft_loss(p, q, t=3): """ soft loss """ return F.kl_div(F.log_softmax(p/t, dim=1), F.softmax(q/t, dim=1), reduction='batchmean') * t * t def hard_loss(p, q): """ hard loss """ return F.cross_entropy(p, q) def train(): # 加载数据 transform = Compose([ToTensor(), Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))]) dataset = CIFAR10('./data', train=True, download=True, transform=transform) dataloader = DataLoader(dataset, batch_size=128, shuffle=True, num_workers=4, pin_memory=True) # 加载模型 teacher = TeacherModel() student = StudentModel() # 设置优化器 teacher_optimizer = torch.optim.Adam(teacher.parameters(), lr=0.001) student_optimizer = torch.optim.Adam(student.parameters(), lr=0.001) # 设置温度 t = 3 # 训练 for epoch in range(10): for i, (images, labels) in enumerate(dataloader): # 前向传播 teacher_outputs = teacher(images) student_outputs = student(images) # 计算loss kl_loss = kl_div_loss(student_outputs, teacher_outputs.detach()) soft_loss = soft_loss(student_outputs, teacher_outputs.detach(), t) hard_loss = hard_loss(student_outputs, labels) total_loss = kl_loss + soft_loss + hard_loss # 反向传播 teacher_optimizer.zero_grad() student_optimizer.zero_grad() total_loss.backward() teacher_optimizer.step() student_optimizer.step() # 打印结果 if (i+1) % 100 == 0: print(f'Epoch [{epoch+1}/10], Step [{i+1}/391], Loss: {total_loss.item():.4f}') # 降低温度 t *= 0.9 # 保存模型 torch.save(student.state_dict(), 'student.pth') ``` 在上面的代码中,`kl_div_loss()`函数计算KL散度loss,`soft_loss()`函数计算soft loss,`hard_loss()`函数计算hard loss。在训练过程中,我们使用了这三种loss的加权和作为总的loss进行反向传播。同时,我们还使用了不同的温度t来控制soft loss的权重,以达到更好的效果。最终,我们保存了训练好的student模型

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值