自定义数据 微调CLIP (结合paper)

CLIP模型微调--附训练代码 本文介绍了CLIP模型的微调方法,包括数据集准备、微调策略选择(全模型/部分/适配器)、损失函数设计以及训练配置建议。提供了PyTorch代码示例展示加载预训练模型、数据预处理和微调循环的实现。注意事项部分强调显存管理、领域适配和提示工程等优化技巧。通过合理微调,CLIP模型可适配多种视觉-语言任务,如图像分类和跨模态检索。 阅读详情
AI摘要

文章讲述了CLIP模型如何通过文本描述进行图像分类,探讨了其在indofashiondataset上的实践,包括训练策略、计算成本、社会偏见问题,以及如何在实际场景中进行零样本预测。,

CLIP 是 Contrastive Language-Image Pre-training 的缩写,是一个擅长理解文本和图像之间关系的模型,下面是一个简单的介绍:

优点: CLIP 在零样本学习方面特别强大,它可以(用自然语言)给出图像的描述,并在基于该描述对新图像进行分类方面表现良好,例如,您可以将图像描述为“a”。猫的黑白照片”,CLIP 可以准确地对猫的新照片进行分类,即使它以前没有见过这些特定图像。
训练: CLIP 在从互联网收集的大量文本图像对数据集上进行训练,这使得它能够学习视觉概念及其描述之间的联系。
局限性: CLIP 也有缺点,训练的计算成本可能很高,并且在需要非常具体或抽象概念的任务上,或者对于与训练所用的文本描述非常不同的数据时,可能表现不佳。训练可能会将社会偏见引入模型中。

paper:Learning Transferable Visual Models From Natural Language Supervision

本文用CLIP做一个零样本分类,
CLIP训练的时候用的是图片和文本描述对,并没有分类的标签,那如何让CLIP做零样本分类?
我们需要给出标签的文本,让图像和所有的文本标签进行匹配,得分高的就是匹配到的标签文本。

paper中提到预测哪个文本整体与哪个图像配对,而不是该文本的准确单词。

在这里插入图片描述

下面通过一个kaggle数据集来具体说明。

这里选用indo fashion dataset, 它有15种印度服饰。

在这里插入图片描述
类别如下:
在这里插入图片描述

数据集结构:
其中images文件夹下又有train, val, test文件夹。

在这里插入图片描述

再看一下json文件,
image_path指的是上面images文件夹下的路径,
product_title是和图片对应的文本描述,训练的时候就是用图片和这个文本进行匹配。
class_label训练的时候不需要,最后验证分类是否正确时会用到。

在这里插入图片描述

import需要的库,定义数据集的文件夹,读取json数据

import json
from PIL import Image
import torch
import torch.nn as nn
from torch.utils.data import DataLoader
import clip
from transformers import CLIPProcessor,CLIPModel
from tqdm import tqdm

json_path = 'your_path/train_data.json'
image_path = 'your_path/images/train/'

input_data = []
with open(json_path, 'r') as f:
	for line in f:
		obj = json.loads(line)
		input_data.append(obj)

CLIP模型,如果不能download, 手动下载走offline模式。

model = CLIPModel.from_pretrained("openai/clip-vit-base-patch32")
processor = CLIPProcessor.from_pretrained("openai/clip-vit-base-patch32")
Setting our device to GPU (Cuda) and loading the pre-trained CLIP model.

device = "cuda:0" if torch.cuda.is_available() else "cpu" 

model, preprocess = clip.load("ViT-B/32", device=device, jit=False)

定义Dataloader

# Define a custom dataset
class image_title_dataset():
	def __init__(self, list_image_path, list_txt):
		self.image_path = list_image_path

		# Tokenize text using CLIP's tokenizer
		self.title = clip.tokenize(list_txt)
	
    def __len__(self):
		# Define the length of the dataset
		return len(self.title)

	def __getitem__(self, idx):
        image = preprocess(Image.open(self.image_path[idx]))
		title = self.title[idx]
		return image, title

这里的dataset需要传入list_image_path和list_txt,
格式是这种:
list_image_path = [‘folder/image1.jpg’,‘folder2/image2.jpg’]
list_txt = [‘description for image1.jpg’ , ‘description for image2.jpg’]
所以要把image_path和product_title都装进list里面。

注意,CLIP的最大序列长度限制在76, 而有些文本描述非常长,需要截掉一部分,
当然截到76长度也有很多种方法,这里简单粗暴就从开头取长度76.

实际代码中,indo数据集不限制长度会报错,而博主觉得这个76可能是text被tokenize之后的token的长度,而不是原文本的长度,
因为把文本截到长度>77也是可以的。
而token的长度是由tokenize的算法决定的。具体最大极限文本长度是多少没测,这里简单地截取到77.

在这里插入图片描述

list_image_path = []
list_txt = []
for item in input_data:
  img_path = image_path + item['image_path'].split('/')[-1]
  
  caption = item['product_title'][:77]
  list_image_path.append(img_path)
  list_txt.append(caption)

dataset = image_title_dataset(list_image_path, list_txt)
train_dataloader = DataLoader(dataset, batch_size=100, shuffle=True) 

# Function to convert model's parameters to FP32 format
#转精度省内存.
def convert_models_to_fp32(model): 
    for p in model.parameters(): 
        p.data = p.data.float() 
        p.grad.data = p.grad.data.float() 

if device == "cpu":
    model.float()  # Convert the model's parameters to float if using CPU

optimizer用Adam,参数按paper中的设置.
不过博主的机器容纳不了这么大的batch_size, 具体batch_size设多少合适,需要自己去验证。

在这里插入图片描述
由于数据集比较小,lr设得更小一些。

optimizer = torch.optim.Adam(
    model.parameters(), lr=5e-5, betas=(0.9, 0.98), eps=1e-6 ,weight_decay=0.2) 

训练

paper中的训练是这样的
在这里插入图片描述

    for epoch in range(num_epochs):
        pbar = tqdm(train_dataloader, total=len(train_dataloader))
        for batch in pbar:
            optimizer.zero_grad()

            images, texts = batch

            images = images.to(device)
            texts = texts.to(device)

            logits_per_image, logits_per_text = model(images, texts)

            ground_truth = torch.arange(len(images), dtype=torch.long, device=device)

            total_loss = (loss_img(logits_per_image, ground_truth) + loss_txt(logits_per_text, ground_truth)) / 2
            total_loss.backward()
            if device == "cpu":
                optimizer.step()
            else:
                convert_models_to_fp32(model)
                optimizer.step()
                clip.model.convert_weights(model)

            pbar.set_description(f"Epoch {epoch}/{num_epochs}, Loss: {total_loss.item():.4f}")
            if torch.isnan(total_loss).any():
                print("epoch {} loss is NaN".format(epoch))
                epoch = num_epochs
                break

训练中,遇到了这些问题:
loss出现了NaN, 调整batch_size能解决,batch_size不要太小。
loss降不下去了,看看paper中的参数,有哪些需要调整。

训练完之后,找来一张图片测试。
这里又有一些注意事项,
请看paper.
因为训练的时候是图片和一段文本描述匹配的,而不是图片和一个单词。
所以你做零样本分类时,类别文本最好不要只写一个单词,比如只写"Saree"。
你要写"A photo of Saree", 这就成了一个句子,效果就会好一些。

在这里插入图片描述

model, preprocess = clip.load("ViT-B/32", device=device)

checkpoint = torch.load("model.pt")
model.load_state_dict(checkpoint['model_state_dict'])

clothing_items = [
    "Saree",
    "Lehenga",
    "Women Kurta",
    "Dupatta",
    "Gown",
    "Nehru Jacket",
    "Sherwani",
    "Men Kurta",
    "Men Mojari",
    "Leggings and Salwar",
    "Blouse",
    "Palazzo",
    "Dhoti Pants",
    "Petticoat",
    "Women Mojari"
]

这里你可能要问,那json文件里面的标签不是这么写的,比如"Women Kurta",json文件的标签是"women_kurta",
为什么不写成"women_kurta"。
这个博主是测试过的,写成json文件里面的标签形式准确率会降低,可能是因为"Women Kurta"更接近自然语言,更贴合训练数据吧。

把15个类别的标签都写成"A photo of {label}" 进行测试。

#你想测的第几张图片
index_ = 500
image_json = input_data[index_]
image_path = os.path.join("indo-fashion-dataset", image_json['image_path'])
image_class = image_json['class_label']
image = preprocess(Image.open(image_path)).unsqueeze(0).to(device)
text = torch.cat([clip.tokenize(f"a photo of a {c}") for c in clothing_items]).to(device)

with torch.no_grad():
    # Encode image and text
    image_features = model.encode_image(image)
    text_features = model.encode_text(text)
    
    # Calculate similarity scores between image and text
    logits_per_image, logits_per_text = model(image, text)
    probs = logits_per_image.softmax(dim=-1).cpu().numpy()

# Normalize image and text features
image_features /= image_features.norm(dim=-1, keepdim=True)
text_features /= text_features.norm(dim=-1, keepdim=True)

# Calculate similarity scores
similarity = (100.0 * image_features @ text_features.T).softmax(dim=-1)
values, indices = similarity[0].topk(5)

# Print the top predictions
print("\nTop predictions:\n")
for value, index in zip(values, indices):
    print(f"{clothing_items[index]:>16s}: {100 * value.item():.2f}%")

# Display the image with its class label
plt.imshow(plt.imread(image_path))
plt.title(f"Image for class: {image_class}")
plt.axis('off')
plt.show()

请添加图片描述
请添加图片描述

训练中并没有精调参数,也没有训练很多epoch. 效果如下。
统计了一下测试集中7450张图片的top1和top3准确率。
top1: 77.7%, top3: 93.57%

请添加图片描述

paper中说CLIP 模型的 Top-5 准确率明显高于其 Top-1 准确率, 本文虽测的是top3, 但也是明显高于top1的。

在这里插入图片描述

又试了一下这种方法,这里效果并没有变好。

在这里插入图片描述

参考资料1
参考资料2

CLIP微调方法 阅读详情

相关推荐

ADIR: Adaptive Diffusion for Image Reconstruction (Paper reading)

具体来说,我们使用最先进的 AVA-MUSIQ 和 KonIQ-MUSIQ 感知质量评估指标,它们是最先进的图像质量评估措施。换句话说就是对特定图像微调预训练模型的参数,使之适应特定的图像,从而有效的达到提升质量的目的。以降质图像为条件的扩散模型,测试阶段自适应增强图像细节,即测试阶段对于单幅图像寻找K-NN副相似的图像形成小数据集,用这些图像微调预训练扩散模型的参数,以达到对于这个单张图像增强细节的目的。本文的框架与GDM之间的主要区别在于,我们需要将我们的方法基于特定的退化图像。

qq_43800752的博客 738

CLIP微调方式

以学习 prompt 的方式来进行少样本学习,性能提升的同时还能保持 CLIP 模型本身参数不动。挺有用的一篇工作,虽然这种 prompt 的方式在 NLP 中早就有了,但应用到多模态 CLIP 中还是有一些意义的。

weixin_44966641的博客 7345

【Paper】Stable Video Diffusion:Scaling Latent Video Diffusion Models to Large Datasets

Stable Video Latent-Diffusion-Model(LDM) 一种稳定的文本到视频、图片到视频的视频生成模型

jaysszhou的博客 1174

深度学习总结——用自己的数据集微调CLIP

在自己的数据集上微调CLIP模型

qq_41234663的博客 3万+

手把手写深度学习(18):finetune微调CLIP模型的原理、代码、调参技巧

​ 在前面的博客《手把手写深度学习(16):用CILP预训练模型搭建图文检索系统/以图搜图/关键词检索系统》中介绍了如何在图文检索、以图搜图、关键词检索等任务中使用CLIP。这篇博客重点讲解代码和调参技巧。

沉迷单车的追风少年 9417

【前端HTML生成条形码——MQ】

本文将展示前端HTML如何根据用户输入内容生成对应的条形码,附HTML和JS代码。代码如下(示例):

weixin_42588676的博客 1955

【Paper Notes】CLIP: Learning Transferable Visual Models From Natural Language Supervision

CLIP 论文笔记,思考和总结

S_Kross的博客 1071

jmeter5.4.1 使用案例

jmeter主要用于接口压力测试,模拟海量请求并发访问接口 1.下载jmeter https://jmeter.apache.org/download_jmeter.cgi 2.启动jemter 双击即可 3.配置jmeter 1.先更改语言 2.创建线程组 配置线程执行规划 3.创建http请求默认值 4.创建http请求 5.创建http信息头管理器 指定 Content-Type:application/json 6.创建响应断言 7.创建察看结果数 直接点击 执行 按.

SpringHASh的博客 1221

Raki的读paper小记:CLIP:Learning Transferable Visual Models From Natural Language Supervision

然后,可以通过自然语言提示利用该任务学习,以实现对许多现有数据集的zero-shot。在足够的规模下,该方法的性能可以与任务特定的监督模型匹敌,尽管仍有很大的改进空间。算是小神作,实验巨大巨全,启发了后面多模态很多很多的工作,初步展现大模型在多模特领域的超强威力。我们发现,采用该范式会使计算机视觉领域出现类似行为,并讨论了这一研究领域的社会影响。我们研究了是否有可能将NLP中任务无关的网络规模预训练的成功转移到另一个领域。使用自然语言作为监督信号,把规模做大,并且不需要标注。

Raki_J的博客 1046

maya中的几个热盒(空格、shift、w键)

maya中许多功能打包放进了不同的热盒中,让我们使用起来更加的便捷,熟练掌握后可以大大提升了建模速度。按下不同按键后鼠标不需要精确点到某个图标,往某个方向滑滑滑就打开了相应功能,非常的炫酷和迅猛。

m0_71983242的博客 1756

如何使用Calibre PERC抽出 点到点/p2p 电阻

@[TOC](如何使用Calibre PERC抽点到点(p2p)电阻) 一、前言 需要实现的功能是从gds中抽出net的点到点的电阻。如下图这样。 二、准备工作 lvs rule pex rule(必要时可以自己定义RC rule) gds p2p点的坐标 定义prode.defs 因为p2p的点是变化的,所以每次prode定义都要重新出,对应的perc rule也是根据每个p2p点的定义来的,perc rule也是每次都要重新出。如果需要可以写一个脚本自动出这些定义文件。 PROBE_POINTS

kobayashiyou的博客 1万+

直播|AAAI 2026 Outstanding Paper Award 微软亚洲研究院,多模态表征模型能力边界LLM2CLIP

受大语言模型(LLM)在语言理解与知识建模方面快速进展的启发,本报告将介绍 LLM2CLIP:一种将 LLM 高效引入 CLIP 体系、显著扩展其多模态表征能力的通用框架。具体而言,LLM2CLIP 首先对 LLM 进行面向 CLIP 场景的“嵌入化”(embedding-ization),随后通过一个轻量级适配器将其与预训练的 CLIP 视觉编码器进行耦合,仅需在数百万规模的图文数据上进行微调即可完成训练,无需大规模重训模型。杨一帆,北京大学硕士。本期报告将由微软亚洲研究院杨一帆进行分享。

BAAIBeijing的博客 297

1.47寸ST7789V3彩屏硬件设计与驱动调试指南

TFT LCD是一种基于薄膜晶体管阵列控制像素明暗的主动式显示技术,其核心依赖于专用驱动IC(如ST7789V3)完成时序生成、GRAM管理与伽马校正。该类小尺寸彩色显示屏广泛应用于嵌入式HMI、IoT终端与可穿戴设备,具备高PPI、低功耗和SPI接口易集成等工程优势。理解RGB565数据格式、SPI Mode 0通信时序及关键寄存器(如0x36方向控制、0x3A像素格式、0x2A/0x2B地址窗口)是实现稳定显示的基础;而正确处理电源设计(严禁5V直供)、复位时序与背光PWM调光,则直接决定系统可靠性与能

weixin_30995917的博客 165

如何快速训练UniDetector的CLIP分类头:Fast RCNN第二阶段训练完全详解

UniDetector 是 CVPR 2023 论文提出的**开放世界通用目标检测**框架,其核心思路是借助 CLIP 的视觉-语言对齐能力实现"零样本"类别识别。本文面向新手,详解如何**基于预计算 Region Proposals(区域建议)训练 UniDetector 的 CLIP 分类头**——也就是 Faster RCNN 解耦训练(Decoupled Training)中的 **Fas

gitblog_01082的博客 1070

SAP 行业扫盲系列之一:SAP 从业者的分类

本文简单介绍了 SAP 从业者的分类,限于笔者狭隘的视角,可能存在遗漏或者不恰当的地方,希望大家在评论区指出。 那些在知乎咨询上向我提问关于进入 SAP 行业建议的朋友们,也请大家提问时注明自己想具体从事 SAP 行业哪一类的工作,这样才能得到更让你们满意的回复。感谢阅读。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1588

垂直领域论坛数据挖掘:Python突破Discuz!加密与用户画像构建指南

在垂直领域论坛,如专业技术论坛、兴趣爱好社区等,积累了大量有价值的信息和用户数据。这些数据不仅可以帮助我们了解用户的行为模式和兴趣点,还能为社区运营、产品优化、商业决策等提供有力支持。然而,许多基于Discuz!系统的论坛对数据进行了加密保护,给数据挖掘带来了一定的挑战。本文将详细探讨如何使用Python突破Discuz!论坛的加密机制,并构建用户画像,实现数据掘金。

u014481728的博客 1693

OVSeg核心功能解析:为什么Mask-adapted CLIP是语义分割的未来?

在计算机视觉领域,语义分割一直是一个核心挑战。传统的语义分割模型需要预先定义好所有类别,无法处理开放词汇表(Open-Vocabulary)场景。今天,我们将深入解析**OVSeg**这一突破性的开源项目,探讨其核心创新——**Mask-adapted CLIP技术**,以及为什么这项技术代表了语义分割的未来发展方向。 ## 🔍 什么是开放词汇语义分割? 传统的语义分割模型通常只能在训练时见

gitblog_00711的博客 869

Open3D 可视化(1)——简单可视化【2026最新版】

简单可视化,博客长期更新,本文最新更新时间为:2026年5月10日。

点云侠的博客 5684

<span class=“js_title_inner“>直播|AAAI 2026 Outstanding Paper Award 微软亚洲研究院,多模态表征模型能力边界LLM2CLIP</span>

受大语言模型(LLM)在语言理解与知识建模方面快速进展的启发,本报告将介绍 LLM2CLIP:一种将 LLM 高效引入 CLIP 体系、显著扩展其多模态表征能力的通用框架。具体而言,LLM2CLIP 首先对 LLM 进行面向 CLIP 场景的“嵌入化”(embedding-ization),随后通过一个轻量级适配器将其与预训练的 CLIP 视觉编码器进行耦合,仅需在数百万规模的图文数据上进行微调即可完成训练,无需大规模重训模型。在ICCV、ACL、AAAI、WWW、MM等国际顶级会议发表多篇高水平论文。

BAAIBeijing的博客 86

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

OVSeg震撼发布:革命性Mask-adapted CLIP技术实现开放词汇语义分割

欢迎来到计算机视觉领域的最新突破!今天我要向大家介绍一个令人兴奋的开源项目——OVSeg(Open-Vocabulary Semantic Segmentation),这是一个基于Mask-adapted CLIP技术的开放词汇语义分割系统。这个项目在2023年CVPR会议上发表,代表了语义分割技术的重要进展,让计算机能够理解并分割任何用户定义的物体类别,而不仅仅是预先训练好的固定类别。 ##

gitblog_00253的博客 411

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

如何使用 annotated_deep_learning_paper_implementations 的 Stable Diffusion 脚本完成文本到图像生成

如果你已经拿到 `annotated_deep_learning_paper_implementations` 仓库,想用它内置的 Stable Diffusion 实现把一段文本提示(prompt)渲染成图片,可以直接使用 [text_to_image.py](https://link.gitcode.com/i/ead32ea631343264760e074d936acbb3) 这个脚本。该脚

gitblog_00954的博客 545

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

html-anything 漏斗信息图 Skill 深度解析:从 5 阶转化数据到 clip-path 纯 CSS 竖版漏斗

本指南以 html-anything 内置的「漏斗信息图(info-funnel)」技能模板为主体,围绕仓库中配套的示例数据 [example.md](https://link.gitcode.com/i/7734953246b838f13a729202e9034dfd)、模板规范 [SKILL.md](https://link.gitcode.com/i/482f34d353b3eeb53099

gitblog_00382的博客 867

【多模态大模型paper阅读笔记-5】LLaVA:Visual Instruction Tuning,5千字精读,最适合入门多模态大模型的工作

LLaVA(视觉指令微调)论文精读

Mugi_jiang的博客 2630

Paper 0 | Visual Instruction Tuning

【解决WHY 2】

weixin_53116058的博客 943

LLM工程落地五大关键技术:推理加速、自优化微调与多模态校准

大语言模型(LLM)正从追求参数规模转向强调可控性、可部署性与数据效率。其核心原理在于通过硬件感知的注意力优化、模型自反馈的指令精炼、轻量级视觉-文本动态对齐、量化感知的低秩微调,以及跨模型知识蒸馏合成数据等技术路径,系统性突破推理延迟、标注成本、多模态偏差和边缘部署瓶颈。这些方法显著提升响应稳定性、图文匹配准确率与指令遵循能力,已在客服对话、电商搜索、长文档处理及端侧AI等场景实现工程闭环。本文聚焦2024年1月五篇高影响力LLM论文,深度拆解其真实动机、最小可验证实现与跨技术组合增益。

angzhan5306的博客 380

如何用 annotated_deep_learning_paper_implementations 实现 Masked Language Model 掩码语言建模实验

如果你想在 PyTorch 中亲手跑一遍 BERT 预训练使用的 Masked Language Model(MLM),而不是只看论文,annotated_deep_learning_paper_implementations 仓库里的 `labml_nn/transformers/mlm/` 模块就是一个可以直接运行的实验:它用字符级分词在 Tiny Shakespeare 语料上训练一个 Tr

gitblog_01190的博客 396
上一篇: Dinov2 + Faiss 图片检索
下一篇: CLIP图生文
蓝羽飞鸟
博客等级 码龄8年 1万+粉丝 727原创
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蓝羽飞鸟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值