探索CAI神经网络API:高性能深度学习框架
CAI神经网络API是一个基于Pascal的深度学习库,专为AVX,AVX2和AVX512指令集优化,并支持AMD、Intel和NVIDIA的OpenCL设备。这个项目起源于名为CAI的更大项目,同时也是Keras基的K-CAI NEURAL API的姐妹项目。在预训练神经API网络仓库中,您可以找到已训练好的神经网络模型。
为什么选择Pascal?
- 速度超快:Pascal编译后的代码性能卓越,甚至在某些架构上超越了主流API。
- 易于理解:Pascal语法简洁,源码可读性强,使得您可以在实现高性能原生代码的同时,保持代码清晰易懂。
先决条件
要使用CAI NEURAL API,您需要安装Lazarus开发环境。如果您的设备支持OpenCL,还需要安装对应的驱动程序。本项目提供了一些示例,涉及到CIFAR-10,CIFAR-100,MNIST,Fashion MNIST以及Places365-Standard Small images 256x256数据集。
是否适用于Delphi?
尽管该项目基于Lazarus,但自v0.98版本以来,有多个单元可以与Delphi兼容,您可以在Delphi环境中创建并运行神经网络。
安装
克隆此项目,将neural
文件夹添加到Lazarus的单位搜索路径中,即可开始使用!
文档
文档包括:
- 简单示例
- 图像分类示例
- 视频教程
- 高级示例
本README中,您将了解以下信息:
- 数据结构(卷积)
- 可用的神经网络层
- 数据集支持
- 训练神经网络
- 并行计算
- 同作者的其他科学出版物
简单示例先来!
假设你想训练一个神经网络学习有两个输入和一个输出的函数,你可以从以下代码开始:
NN.AddLayer([
TNNetInput.Create(2),
TNNetFullConnectReLU.Create(32),
TNNetFullConnectReLU.Create(32),
TNNetFullConnectLinear.Create(1)
]);
上述代码包含两个输入层(TNNetInput
),两个全连接层(TNNetFullConnectReLU
),每个有32个神经元,以及一个输出层(TNNetFullConnectLinear
)。
可以在这些源代码示例中了解更多关于如何构建和训练简单神经网络的信息:
- 训练神经网络学习勾股定理
- 使用FitLoading训练神经网络学习勾股定理
- 使用neuralfit单元训练神经网络学习AND、OR和XOR
- 不使用neuralfit单元训练神经网络学习AND、OR和XOR
载入与保存神经网络
载入很简单:
NN := TNNet.Create;
NN.LoadFromFile('MyTrainedNeuralNetwork.nn');
保存同样容易:
NN.SaveToFile('MyTrainedNeuralNetwork.nn');
自然语言处理:简单文本生成
这个NLP源代码示例展示了一个简单的神经网络模型,用于在Tiny Stories数据集上进行训练。经过训练后,你可以执行以下代码进行文本生成:
WriteLn(GenerateStringFromChars(NFit.NN, 'once', FSampler), '.');
WriteLn(GenerateStringFromChars(NFit.NN, 'one ', FSampler), '.');
这将产生如下的输出:
once upon a time, there was a little girl named lily. she loved to play outside i.
one day, a little girl named lily was playing in her garden. she saw a big car wi.
可以直接在Colab上查看原始训练文件并自行运行: https://colab.research.google.com/github/joaopauloschuler/neural-api/blob/master/examples/SimpleNLP/NLP_CAI_TinyStories_Simple_Example.ipynb
创建自己的聊天机器人
一旦你的神经网络被训练好,你可以使用以下代码运行自己的聊天机器人:
var
S: string;
oSampler: TNNetSamplerBase;
NN: TNNet;
begin
oSampler := TNNetSamplerTopP.Create(0.6);
NN := TNNet.Create();
WriteLn('Loading neural network.');
NN.LoadFromFile('MyNeuralNetwork.nn');
NN.DebugStructure();
WriteLn();
WriteLn('Write something and I will reply.');
repeat
Write('User: ');
ReadLn(S);
WriteLn('Neural network: ', GenerateStringFromChars(NN, LowerCase(S), oSampler), '.');
until S = 'exit';
NN.Free;
oSampler.Free;
end;
图像分类简易示例
CIFAR-10图像分类示例
CIFAR-10是机器学习和计算机视觉算法常用的图像集合,由加拿大高级研究所(CIFAR)创建。它包含60,000张32x32像素的彩色图像,分为10个不同的类别,每个类别有6,000张图像。类别包括飞机、汽车、鸟类、猫、鹿、狗、青蛙、马、船和卡车。尽管分辨率较低且尺寸较小,但在高准确度上的挑战使得CIFAR-10成为测试机器学习技术进步的良好数据集。
以下是一个用于CIFAR-10图像分类的源代码示例:
NN := TNNet.Create();
NN.AddLayer([
TNNetInput.Create(32, 32, 3), //32x32x3 输入图像
TNNetConvolutionReLU.Create({Features=}16, {FeatureSize=}5, {Padding=}0, {Stride=}1, {SuppressBias=}0),
TNNetMaxPool.Create({Size=}2),
TNNetConvolutionReLU.Create({Features=}32, {FeatureSize=}5, {Padding=}0, {Stride=}1, {SuppressBias=}0),
TNNetMaxPool.Create({Size=}2),
TNNetConvolutionReLU.Create({Features=}32, {FeatureSize=}5, {Padding=}0, {Stride=}1, {SuppressBias=}0),
TNNetFullConnectReLU.Create({Neurons=}32),
TNNetFullConnectLinear.Create(NumClasses),
TNNetSoftMax.Create()
]);
CreateCifar10Volumes(ImgTrainingVolumes, ImgValidationVolumes, ImgTestVolumes);
WriteLn('Neural Network will minimize error with:');
WriteLn(' Layers: ', NN.CountLayers());
WriteLn(' Neurons:', NN.CountNeurons());
WriteLn(' Weights:', NN.CountWeights());
NeuralFit := TNeuralImageFit.Create;
NeuralFit.InitialLearningRate := fLearningRate;
NeuralFit.Inertia := fInertia;
NeuralFit.Fit(NN, ImgTrainingVolumes, ImgValidationVolumes, ImgTestVolumes, NumClasses, {batchsize}128, {epochs}100);
这些示例训练神经网络对图像进行分类,例如判断图像是否包含猫、狗或飞机等。
您可以使用TNNet.SaveToFile
和TNNet.LoadFromFile
方法保存和加载训练模型。该文件格式是可移植的,这意味着您可以在CPU上训练并在GPU上运行,或者在AMD硬件上训练然后在ARM设备上运行。以下是一个简单示例,演示如何加载预先训练好的模型进行图像分类:
procedure ClassifyOneImageSimple;
var
NN: TNNet;
ImageFileName: string;
NeuralFit: TNeuralImageFit;
begin
WriteLn('Loading Neural Network...');
NN := TNNet.Create;
NN.LoadFromFile('SimplePlantLeafDisease-20230720.nn');
NeuralFit := TNeuralImageFit.Create;
ImageFileName := 'plant/Apple___Black_rot/image (1).JPG';
WriteLn('Processing image: ', ImageFileName);
WriteLn(
'The class of the image is: ',
N
);
}
总之,CAI神经网络API提供了一个强大而灵活的平台,适合各种任务,从自然语言处理到图像识别,甚至创建自定义聊天机器人。其高效性和可移植性使其成为一个理想的工具,无论您是在研究还是实际应用中探索深度学习。别忘了,开始探索只需几个简单的步骤,现在就加入这个充满可能性的世界吧!
鸿蒙开发工具大赶集
本仓将收集和展示鸿蒙开发工具,欢迎大家踊跃投稿。通过pr附上您的工具介绍和使用指南,并加上工具对应的链接,通过的工具将会成功上架到我们社区。012LangBot
😎丰富生态、🧩支持扩展、🦄多模态 - 大模型原生即时通信机器人平台 | 适配 QQ / 微信(企业微信、个人微信)/ 飞书 / 钉钉 / Discord / Telegram 等消息平台 | 支持 OpenAI GPT、ChatGPT、DeepSeek、Dify、Claude、Gemini、Ollama、LM Studio、SiliconFlow、Qwen、Moonshot、ChatGLM 等 LLM 的机器人 / Agent | LLM-based instant messaging bots platform, supports Discord, Telegram, WeChat, Lark, DingTalk, QQ, OpenAI ChatGPT, DeepSeekPython01每日精选项目
🔥🔥 每日精选已经升级为:【行业动态】,快去首页看看吧,后续都在【首页 - 行业动态】内更新,多条更新哦~🔥🔥 每日推荐行业内最新、增长最快的项目,快速了解行业最新热门项目动态~~029omega-ai
Omega-AI:基于java打造的深度学习框架,帮助你快速搭建神经网络,实现模型推理与训练,引擎支持自动求导,多线程与GPU运算,GPU支持CUDA,CUDNN。Java02Cangjie-Examples
本仓将收集和展示高质量的仓颉示例代码,欢迎大家投稿,让全世界看到您的妙趣设计,也让更多人通过您的编码理解和喜爱仓颉语言。Cangjie050毕方Talon工具
本工具是一个端到端的工具,用于项目的生成IR并自动进行缺陷检测。Python040PDFMathTranslate
PDF scientific paper translation with preserved formats - 基于 AI 完整保留排版的 PDF 文档全文双语翻译,支持 Google/DeepL/Ollama/OpenAI 等服务,提供 CLI/GUI/DockerPython06mybatis-plus
mybatis 增强工具包,简化 CRUD 操作。 文档 http://baomidou.com 低代码组件库 http://aizuda.comJava03国产编程语言蓝皮书
《国产编程语言蓝皮书》-编委会工作区018- DDeepSeek-R1探索新一代推理模型,DeepSeek-R1系列以大规模强化学习为基础,实现自主推理,表现卓越,推理行为强大且独特。开源共享,助力研究社区深入探索LLM推理能力,推动行业发展。【此简介由AI生成】Python00
热门内容推荐
最新内容推荐
项目优选








