当前位置: 首页 > news >正文

matlab使用 BP 神经网络进行数据预测的完整流程,包括数据读取、数据预处理等等

%% 初始化程序
warning off         % 关闭报警信息
close all               % 关闭所有图窗
clear                    % 清空变量
clc                        % 清空命令行
setdemorandstream(172)       %设置随机种子为1%% 读取数据
data = xlsread('Y.xlsx');
%% 划分训练集与测试集
temp = randperm(72);  % 产生1到2000的乱序,用来随机抽取训练集和测试集
inputTrainDataset = data(temp(1:50), 1:20)';  % 前1900行数据训练,1到12列为输入变量
outputTrainDataset = data(temp(1:50), 21)';   % 前1900行数据训练,13列为输出目标inputTestDataset = data(temp(50:72), 1:20)'; % 1901到2000行数据训练,1到12列为输入变量
outputTestDataset = data(temp(50:72), 21)';  % 1901到2000行数据训练,13列为输出目标
%% 归一化处理
[inputn_train, input_ps] = mapminmax(inputTrainDataset, 0, 1);
inputn_test = mapminmax('apply', inputTestDataset, input_ps);
[outputn_train, output_ps] = mapminmax(outputTrainDataset, 0, 1);%% 确定神经网络结构
inputnode = 20;  % 输入层的神经元节点数量
outputnode = 1;   %输出层的神经元节点数量% 以下用于确定隐含层的神经元节点数量
bound = 3 : 1 : 15;  % 在3到15范围内试凑隐含层的神经元节点数量
cnt = 1;  % 迭代计数
for k = boundnet=newff(inputn_train,outputn_train,k,{'tansig','purelin'},'trainlm');net.trainParam.epochs=1000;                                 % 训练次数net.trainParam.lr=0.01;                                           % 学习速率net.trainParam.goal=1e-5;                                      % 训练目标最小误差net.trainParam.showWindow = 0;                           % 关闭仿真界面net=train(net,inputn_train,outputn_train);                %开始训练model_out = sim(net, inputn_train);                         % 训练集的归一化预测结果e(cnt) = mean((model_out - outputn_train).^2);      % 训练集仿真的根均方误差disp(['隐含层节点数量为: ', num2str(k), ', 相应的训练集归一化根均方误差(RMSE)值为: ', num2str(e(cnt))])cnt = cnt + 1;                                                           % 迭代次数+1
end
hiddennode = bound(find(e == min(e), 1));                  % 找到根均方误差最小时对应的最少隐含层节点数量,将之当做最优隐含层节点
disp(['最佳的隐含层节点数量为: ', num2str(hiddennode), ', 相应的训练集归一化根均方误差(RMSE)值最小, 为: ', num2str(e((find(e == min(e), 1))))])%% 建立模型
net=newff(inputn_train,outputn_train,hiddennode,{'tansig','purelin'},'trainlm');
net.trainParam.epochs=1000;         % 训练次数
net.trainParam.lr=0.01;                   % 学习速率
net.trainParam.goal=1e-5;                    % 训练目标最小误差
%开始训练
net=train(net,inputn_train,outputn_train);
%% 预测和反归一化
model_out1 = sim(net, inputn_train);  % 训练集的归一化预测结果
model_out2 = sim(net, inputn_test);    % 测试集的归一化预测结果
predictTrainDataset = mapminmax('reverse', model_out1, output_ps);  % 反归一化训练集预测结果为原始数量级
predictTestDataset = mapminmax('reverse', model_out2, output_ps);    % 反归一化测试集预测结果为原始数量级
%% 分析误差
disp(' ')
disp('训练集误差计算如下: ')
MSE = mean((outputTrainDataset - predictTrainDataset).^2);
disp(['均方误差MSE = ', num2str(MSE)])
MAE = mean(abs(outputTrainDataset - predictTrainDataset));
disp(['平均绝对误差MAE = ', num2str(MAE)])
RMSE = sqrt(MSE);
disp(['根均方误差RMSE = ', num2str(RMSE)])
MAPE = mean(abs((outputTrainDataset - predictTrainDataset)./outputTrainDataset));
disp(['平均绝对百分比误差MAPE = ', num2str(MAPE*100), '%'])
R = corrcoef(outputTrainDataset, predictTrainDataset);
R2 = R(1, 2)^2;
disp(['拟合优度R2 = ', num2str(R2)])
disp(' ')
disp('测试集误差计算如下: ')
MSE_test = mean((outputTestDataset - predictTestDataset).^2);
disp(['均方误差MSE = ', num2str(MSE_test)])
MAE_test = mean(abs(outputTestDataset - predictTestDataset));
disp(['平均绝对误差MAE = ', num2str(MAE_test)])
RMSE_test = sqrt(MSE_test);
disp(['根均方误差RMSE = ', num2str(RMSE_test)])
MAPE_test = mean(abs((outputTestDataset - predictTestDataset)./outputTestDataset));
disp(['平均绝对百分比误差MAPE = ', num2str(MAPE_test*100), '%'])
R_test = corrcoef(outputTestDataset, predictTestDataset);
R2_test = R_test(1, 2)^2;
disp(['拟合优度R2 = ', num2str(R2_test)])
%% 对结果作图
% 训练集
figure
plot(outputTrainDataset, 'b*-', 'LineWidth', 0.8)
hold on
plot(predictTrainDataset, 'ro-', 'LineWidth', 0.8)
grid on
xlabel('训练样本序号')
ylabel('目标')
legend('实际值', '预测值')
title({'BP神经网络预测训练集预测值和实际值对比图', ['根均方误差RMSE = ', num2str(RMSE), '拟合优度R2 = ', num2str(R2)]})figure
plot(outputTrainDataset - predictTrainDataset, 'b*-', 'LineWidth', 0.8)
grid on
xlabel('训练样本序号')
ylabel('预测偏差')
legend('误差')
title({'BP神经网络预测训练集预测误差图', ['平均绝对百分比误差MAPE = ', num2str(MAPE*100), '%']})% 测试集
figure
plot(outputTestDataset, 'b*-', 'LineWidth', 0.8)
hold on
plot(predictTestDataset, 'ro-', 'LineWidth', 0.8)
grid on
xlabel('测试样本序号')
ylabel('目标')
legend('实际值', '预测值')
title({'BP神经网络预测测试集预测值和实际值对比图', ['根均方误差RMSE = ', num2str(RMSE_test), '拟合优度R2 = ', num2str(R2_test)]})figure
plot(outputTestDataset - predictTestDataset, 'b*-', 'LineWidth', 0.8)
grid on
xlabel('测试样本序号')
ylabel('预测偏差')
legend('误差')
title({'BP神经网络预测测试集预测误差图', ['平均绝对百分比误差MAPE = ', num2str(MAPE_test*100), '%']})% 获取输入层到第一个隐藏层的权重
weights_input_to_hidden = net.IW{1,1};% 显示权重矩阵
disp('Input to hidden layer weights:');
disp(weights_input_to_hidden);
%% 参数
% 获取输入层到第一个隐藏层的权重
weights_input_to_hidden = net.IW{1,1};
disp('Input to hidden layer weights:');
disp(weights_input_to_hidden);
% 获取第一个隐藏层到输出层的权重
weights_hidden_to_output = net.LW{2,1};
disp('Hidden to output layer weights:');
disp(weights_hidden_to_output);
% 获取输入层的偏置
biases_output_layer = net.b{1};
disp('Input Layer Biases:');
disp(biases_output_layer);
% 获取隐藏层的偏置
biases_output_layer = net.b{2};
disp('hidden Layer Biases:');
disp(biases_output_layer);

以下是对上述代码功能的详细解释:

  1. 初始化部分
    • warning off:关闭报警信息,避免一些不必要的警告信息干扰程序的运行。
    • close all:关闭所有打开的图形窗口,确保程序开始时处于一个干净的图形环境。
    • clear:清空工作区中的变量,防止之前的变量影响当前程序的运行。
    • clc:清空命令行窗口,使命令行更加清晰。
    • setdemorandstream(172):设置随机种子为 172,确保程序运行结果的可重复性,使得随机过程在多次运行时产生相同的结果。
  2. 数据读取部分
    • data = xlsread('Y.xlsx'):从名为 Y.xlsx 的 Excel 文件中读取数据。
  3. 数据集划分部分
    • temp = randperm(72):生成一个 1 到 72 的随机排列序列,用于随机抽取训练集和测试集。
    • inputTrainDataset = data(temp(1:50), 1:20)':将数据的前 50 个随机索引对应的行的第 1 到 20 列作为输入训练集,并进行转置。
    • outputTrainDataset = data(temp(1:50), 21)':将数据的前 50 个随机索引对应的行的第 21 列作为输出训练集,并进行转置。
    • inputTestDataset = data(temp(50:72), 1:20)':将数据的第 50 到 72 个随机索引对应的行的第 1 到 20 列作为输入测试集,并进行转置。
    • outputTestDataset = data(temp(50:72), 21)':将数据的第 50 到 72 个随机索引对应的行的第 21 列作为输出测试集,并进行转置。
  4. 归一化处理部分
    • [inputn_train, input_ps] = mapminmax(inputTrainDataset, 0, 1):将输入训练集的数据归一化到 0 到 1 的范围,并存储归一化的结果和归一化参数。
    • inputn_test = mapminmax('apply', inputTestDataset, input_ps):使用训练集的归一化参数对输入测试集进行归一化处理。
    • [outputn_train, output_ps] = mapminmax(outputTrainDataset, 0, 1):将输出训练集的数据归一化到 0 到 1 的范围,并存储归一化的结果和归一化参数。
  5. 神经网络结构确定部分
    • inputnode = 20:设置输入层的神经元节点数量为 20。
    • outputnode = 1:设置输出层的神经元节点数量为 1。
    • 对隐含层的神经元节点数量进行试凑:
      • bound = 3 : 1 : 15:设置隐含层神经元节点数量的试凑范围从 3 到 15。
      • 使用 for 循环遍历 bound 中的每个节点数量 k
        • net=newff(inputn_train,outputn_train,k,{'tansig','purelin'},'trainlm'):创建一个新的前馈神经网络,激活函数分别为 tansigpurelin,训练算法为 trainlm
        • net.trainParam.epochs=1000:设置训练次数为 1000 次。
        • net.trainParam.lr=0.01:设置学习速率为 0.01。
        • net.trainParam.goal=1e-5:设置训练目标最小误差为 1e-5。
        • net.trainParam.showWindow = 0:关闭仿真界面。
        • net=train(net,inputn_train,outputn_train):使用输入训练集和输出训练集对网络进行训练。
        • model_out = sim(net, inputn_train):使用训练好的网络对输入训练集进行仿真,得到归一化预测结果。
        • e(cnt) = mean((model_out - outputn_train).^2):计算训练集的归一化根均方误差,并存储在 e 数组中。
        • disp(['隐含层节点数量为: ', num2str(k), ', 相应的训练集归一化根均方误差(RMSE)值为: ', num2str(e(cnt))]):显示当前隐含层节点数量及其对应的训练集的归一化根均方误差。
      • hiddennode = bound(find(e == min(e), 1)):找到使根均方误差最小的隐含层节点数量,作为最优的隐含层节点数量。
      • disp(['最佳的隐含层节点数量为: ', num2str(hiddennode), ', 相应的训练集归一化根均方误差(RMSE)值最小, 为: ', num2str(e((find(e == min(e), 1))))]:显示最佳的隐含层节点数量及其最小的根均方误差。
  6. 模型建立部分
    • net=newff(inputn_train,outputn_train,hiddennode,{'tansig','purelin'},'trainlm'):使用最优的隐含层节点数量建立最终的神经网络。
    • net.trainParam.epochs=1000:设置训练次数为 1000 次。
    • net.trainParam.lr=0.01:设置学习速率为 0.01。
    • net.trainParam.goal=1e-5:设置训练目标最小误差为 1e-5。
    • net=train(net,inputn_train,outputn_train):使用输入训练集和输出训练集对最终的神经网络进行训练。
  7. 预测和反归一化部分
    • model_out1 = sim(net, inputn_train):使用训练好的网络对输入训练集进行仿真,得到归一化预测结果。
    • model_out2 = sim(net, inputn_test):使用训练好的网络对输入测试集进行仿真,得到归一化预测结果。
    • predictTrainDataset = mapminmax('reverse', model_out1, output_ps):将训练集的归一化预测结果反归一化到原始数据范围。
    • predictTestDataset = mapminmax('reverse', model_out2, output_ps):将测试集的归一化预测结果反归一化到原始数据范围。
  8. 误差分析部分
    • 计算训练集的各种误差指标:
      • MSE = mean((outputTrainDataset - predictTrainDataset).^2):计算训练集的均方误差。
      • MAE = mean(abs(outputTrainDataset - predictTrainDataset)):计算训练集的平均绝对误差。
      • RMSE = sqrt(MSE):计算训练集的根均方误差。
      • MAPE = mean(abs((outputTrainDataset - predictTrainDataset)./outputTrainDataset)):计算训练集的平均绝对百分比误差。
      • R = corrcoef(outputTrainDataset, predictTrainDataset):计算训练集实际值和预测值的相关系数矩阵。
      • R2 = R(1, 2)^2:计算训练集的拟合优度。
    • 计算测试集的各种误差指标:
      • MSE_test = mean((outputTestDataset - predictTestDataset).^2):计算测试集的均方误差。
      • MAE_test = mean(abs(outputTestDataset - predictTestDataset)):计算测试集的平均绝对误差。
      • RMSE_test = sqrt(MSE_test):计算测试集的根均方误差。
      • MAPE_test = mean(abs((outputTestDataset - predictTestDataset)./outputTestDataset)):计算测试集的平均绝对百分比误差。
      • R_test = corrcoef(outputTestDataset, predictTestDataset):计算测试集实际值和预测值的相关系数矩阵。
      • R2_test = R_test(1, 2)^2:计算测试集的拟合优度。
  9. 结果作图部分
    • 对训练集的实际值和预测值进行绘图,并显示误差信息。
    • 对测试集的实际值和预测值进行绘图,并显示误差信息。
  10. 参数获取部分
    • weights_input_to_hidden = net.IW{1,1}:获取输入层到第一个隐藏层的权重矩阵。
    • weights_hidden_to_output = net.LW{2,1}:获取第一个隐藏层到输出层的权重矩阵。
    • biases_output_layer = net.b{1}:获取输入层的偏置。
    • biases_output_layer = net.b{2}:获取隐藏层的偏置。

总的来说,该程序是一个使用 BP 神经网络进行数据预测的完整流程,包括数据读取、数据预处理(划分数据集和归一化)、神经网络结构的确定(试凑隐含层节点数量)、训练、预测、结果反归一化、误差分析和结果可视化,并展示了神经网络的部分权重和偏置信息。

相关文章:

matlab使用 BP 神经网络进行数据预测的完整流程,包括数据读取、数据预处理等等

%% 初始化程序 warning off % 关闭报警信息 close all % 关闭所有图窗 clear % 清空变量 clc % 清空命令行 setdemorandstream(172) %设置随机种子为1%% 读取数据 data xlsread(Y.xlsx); %% 划分训练集…...

systemd-networkd NetworkManager 介绍

systemd-networkd 和 NetworkManager 的详细介绍 systemd-networkd 和 NetworkManager 都是 Linux 系统中常用的网络管理工具,但它们的设计目标和使用场景不同。以下是它们的详细介绍、功能、使用场景和差异。 1. systemd-networkd systemd-networkd 是一个由 syst…...

本地部署项目管理工具 Leantime 并实现外部访问

Leantime 是一款开源 AI 项目。它可以在本地直接运行大语言模型 LLM、生成图像、音频等。直接降低了用户使用AI的门褴。本文将详细的介绍如何利用 Docker 在本地部署 Leantime 并结合路由侠实现外网访问本地部署的 Leantime 。 第一步,本地部署安装 Leantime 1&am…...

PHP cURL 函数初学者完全指南

文章精选推荐 1 JetBrains Ai assistant 编程工具让你的工作效率翻倍 2 Extra Icons:JetBrains IDE的图标增强神器 3 IDEA插件推荐-SequenceDiagram,自动生成时序图 4 BashSupport Pro 这个ides插件主要是用来干嘛的 ? 5 IDEA必装的插件&…...

C#中的Array数组,List集合和ArrayList集合--07

目录 一.Array数组概念的简单理解 1.数组的初始化 2.数组的长度 3.数组的克隆和复制 4.数组的清空 5.数组的查找 6.数组的逆转 7.数组的拓展和缩减 8.数组的比较 9.数组的合并 10.使用Array类中的静态方法,如Array.Sort,Array.BinarySearch 等 二.Array数组进阶 1.二…...

基于深度学习的视觉检测小项目(十三) 资源文件的生成和调用

在使用 PySide6 进行开发时,管理应用程序的资源(如图标、图片、字体、样式表、音视频等)是一个常见的任务。PySide6 提供了一个工具 pyside6-rcc,它能够将资源文件(.qrc)编译成 Python 模块,然后…...

硬件实用技巧:TPS54331DR横杠标识识别1引脚

若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/145116969 长沙红胖子Qt(长沙创微智科)博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV…...

《C++11》nullptr介绍:从NULL说起

在C11之前,我们通常使用NULL来表示空指针。然而,NULL在C中有一些问题和限制,这就是C11引入nullptr的原因。本文将详细介绍nullptr的定义、用法和优点。 1. NULL的问题 在C中,NULL实际上是一个整数0,而不是一个真正的…...

自然语言处理基础:全面概述

自然语言处理基础:全面概述 什么是NLP及其重要性、NLP的核心组件、NLU与NLG、NLU与NLG的集成、NLP的挑战以及NLP的未来 自然语言处理(NLP)是人工智能(AI)中最引人入胜且具有影响力的领域之一。它驱动着我们日常使用的…...

网络安全的几种攻击方法

攻击方法 挂马: 就是在别人的网站文件里面放入网页木马或者是将代码潜入到对方正常的网页文件里,以使浏览者中马。 挖洞: 指漏洞挖掘。 加壳: 就是利用特殊的算法,将EXE可执行程序或者DLL动态连接库文件的编码进行改变(比如实现压缩、加密&a…...

国内源快速在线安装qt5.15以上版本。(10min安装好)(图文教程)

参考文章:Qt6安装教程——国内源-CSDN博客 1、在国内源上下载qt在线安装工具 NJU Mirror 2、 将下载好的在线安装工具,放到C盘根目录, 2.1 打开windows Powershell(WinX),下边那个最好。 输入两条指令&a…...

【pycharm发现找不到python打包工具,且无法下载】

发现找不到python打包工具,且无法下载 解决方法: 第一步:安装distutils,在CMD命令行输入: python -m ensurepip --default-pip第二步:检查和安装setuptools和wheel: python -m pip install --upgrade …...

C++ QT 自绘表盘

文章目录 效果图代码 效果图 代码 代码没什么好说的&#xff0c;直接上源码.h #pragma once#include <QWidget> #include <QPainter> #include <QResizeEvent> #include <QtMath> #include <QCoreApplication>class DialPlateWidget : public …...

数据科学与数据工程:两者的区别与交集

&#x1f496; 欢迎来到我的博客&#xff01; 非常高兴能在这里与您相遇。在这里&#xff0c;您不仅能获得有趣的技术分享&#xff0c;还能感受到轻松愉快的氛围。无论您是编程新手&#xff0c;还是资深开发者&#xff0c;都能在这里找到属于您的知识宝藏&#xff0c;学习和成长…...

MAC AndroidStudio模拟器无网络

先确认PC端是正常访问网络的&#xff1b; 模拟器端修改Wifi设置&#xff1a;设置 - 网络和互联网 - WALN设置 按照上图修改&#xff1b; IP设置&#xff1a;从DHCP修改为静态&#xff0c;IP地址&#xff1a;10.0.2.16 &#xff0c;网关&#xff1a;10.0.2.2 &#xff0c; DNS…...

PHP语言的多线程编程

PHP语言的多线程编程 引言 在现代Web开发中&#xff0c;PHP以其简洁和易用性广受欢迎。它常用于构建动态网站和应用程序。然而&#xff0c;PHP本身是单线程的&#xff0c;这意味着它在处理多个任务时可能会受到性能限制。随着互联网的发展&#xff0c;对高并发、高可用性和实…...

当自动包布机遇上Profinet转ModbusTCP网关,“妙啊”,工业智能“前景无限

在自动化控制技术日新月异的当下&#xff0c;Profinet与ModbusTCP这两种协议在工业通信领域占据着举足轻重的地位。ModbusTCP是基于以太网的串行通信协议&#xff0c;而Profinet则是依托工业以太网的现场总线协议。它们在数据传输速度、实时性表现以及兼容性等方面各具特色。不…...

浅析大语言模型安全和隐私保护国内外标准和政策

过去两年&#xff0c;大模型技术已经普及并逐步渗透到各行各业&#xff0c;2025年注定是大模型应用井喷式发展的一年&#xff0c;AI在快速发展的同时&#xff0c;其带来的安全风险也逐渐凸显。人工智能系统的安全性和隐私保护已经成为社会关注的重点。 附下载&#xff1a;600多…...

OpenCV相机标定与3D重建(54)解决透视 n 点问题(Perspective-n-Point, PnP)函数solvePnP()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 根据3D-2D点对应关系找到物体的姿态。 cv::solvePnP 是 OpenCV 库中的一个函数&#xff0c;用于解决透视 n 点问题&#xff08;Perspective-n-Po…...

Chatper 4: Implementing a GPT model from Scratch To Generate Text

文章目录 4 Implementing a GPT model from Scratch To Generate Text4.1 Coding an LLM architecture4.2 Normalizing activations with layer normalization4.3 Implementing a feed forward network with GELU activations4.4 Adding shortcut connections4.5 Connecting at…...

SPSS加权处理实战:广告效果分析中的权重设置技巧(附详细步骤)

SPSS加权处理实战&#xff1a;广告效果分析中的权重设置技巧&#xff08;附详细步骤&#xff09; 当市场部门拿着厚厚一叠广告效果调研数据来找你时&#xff0c;最头疼的往往不是分析本身&#xff0c;而是那些看似简单却暗藏玄机的原始数据。上个月我就遇到这样一个案例&#x…...

2025平航杯电子取证实战:从木马溯源到服务器渗透的完整链条分析

1. 木马溯源&#xff1a;从可疑流量到攻击者定位 2025年4月&#xff0c;杭州滨江警方接到一起特殊报案。市民刘晓倩&#xff08;化名倩倩&#xff09;发现自己的手机出现异常发热、电量消耗过快等现象&#xff0c;怀疑设备被人监控。这个看似普通的个人隐私案件&#xff0c;最终…...

一天一个开源项目(第61篇):knowledge_graph - 把任意文本转成知识图谱

引言 “Convert any text to a graph of knowledge. Graph Retrieval Augmented Generation (GRAG) — a new and improved version of RAG.” 这是「一天一个开源项目」系列的第 61 篇文章。今天介绍的项目是 knowledge_graph&#xff08;GitHub&#xff09;。 想把文档、PDF…...

CoPaw持续学习(Continual Learning)实践:让模型记住新知识而不遗忘

CoPaw持续学习&#xff08;Continual Learning&#xff09;实践&#xff1a;让模型记住新知识而不遗忘 1. 为什么需要持续学习&#xff1f; 想象一下&#xff0c;你教会了一只小狗坐下和握手的指令。但当你开始教它新的技能"装死"时&#xff0c;它却完全忘记了之前…...

中国四大高考工厂是哪四所

根据当前&#xff08;2026年4月&#xff09;可查的权威公开资料&#xff0c;‌“中国四大高考工厂”通常指以下四所中学‌&#xff1a; ‌1、河北衡水中学‌ 2、安徽毛坦厂中学‌ 3、‌河南郸城一高‌&#xff08;即郸城县第一高级中学&#xff09; 4、湖北黄冈中学 ‌ 背…...

阿里云代理商:OpenClaw 技能安全部署指南与高口碑扩展精选

在集成任何 OpenClaw 第三方功能模块前&#xff0c;安全防护是首要环节。核心流程是借助官方安全审查工具&#xff0c;预先扫描潜在威胁&#xff0c;避免因加载恶意模块引发的数据泄漏或设备隐患。1. 核心安防工具部署优先部署 skill-vetting 安全扫描工具&#xff08;OpenClaw…...

GLM-4.1V-9B-Base开源大模型:面向中文场景优化的轻量级视觉理解基座

GLM-4.1V-9B-Base开源大模型&#xff1a;面向中文场景优化的轻量级视觉理解基座 1. 模型概述 GLM-4.1V-9B-Base是智谱AI开源的一款专注于视觉多模态理解的基础模型&#xff0c;特别针对中文场景进行了优化。这个9B参数的轻量级模型在保持高效推理能力的同时&#xff0c;提供了…...

Intv_AI_MK11 Android应用集成指南:在移动端调用AI模型服务

Intv_AI_MK11 Android应用集成指南&#xff1a;在移动端调用AI模型服务 1. 移动端AI集成的价值与挑战 想象一下&#xff0c;你的Android应用突然拥有了理解用户意图、自动生成图片描述甚至进行自然对话的能力。这正是Intv_AI_MK11这类云端AI模型能为移动应用带来的变革。但在…...

tao-8k Embedding模型部署教程:支持中文长文本的高兼容性向量服务

tao-8k Embedding模型部署教程&#xff1a;支持中文长文本的高兼容性向量服务 你是不是遇到过这样的问题&#xff1f;想把一段很长的中文文档&#xff0c;比如一篇技术报告、一份产品说明书&#xff0c;甚至是一本小说的章节&#xff0c;转换成计算机能理解的向量&#xff0c;…...

Simulink双矢量MPC实战:从郭磊磊论文到可运行的Matlab Function代码(调制模型预测控制详解)

Simulink双矢量MPC实战&#xff1a;从理论到代码的完整实现路径 当我在实验室第一次尝试复现郭磊磊老师那篇经典论文时&#xff0c;面对12种矢量组合和复杂的PWM生成逻辑&#xff0c;完全不知从何下手。经过三个月的反复试验和代码调试&#xff0c;终于摸清了从论文公式到可运行…...