SpringCloud+Vue+Python人工智能(fastAPI,机器学习,深度学习)前后端架构各功能实现思路——SpringCloud后端——整合mybatis plus和代码生成器

FastApi通过nacos注册 实现SpringCloudGateway服务调用 安装依赖 pipenv install apscheduler pipenv install nacos-sdk-python 编写注册方法 app/nacos.py import nacos from .settings import settings client = nacos.NacosClient( settings.SERVER_HOST, namespace=settings.SERVER_NAMESPACE_ID) async def beat(): 阅读详情
SpringCloud+Vue+Python人工智能(fastAPI,机器学习,深度学习)前后端架构各功能实现思路——主目录(持续更新):https://blog.youkuaiyun.com/grd_java/article/details/144986730

1. 修改依赖

主目录中的环境搭建,默认不使用mybatis-plus,如果有需求,这里提供修改思路

1. 根目录pom中,添加3.5.9的统一版本管理,以及代码生成器需要的模版依赖


在这里插入图片描述

<mybatis_plus.version>3.5.9</mybatis_plus.version>
<!--添加 模板引擎 依赖,MyBatis-Plus 支持 Velocity(默认):这是代码生成器需要的依赖-->
<velocity-engine-core>2.4.1</velocity-engine-core>

在这里插入图片描述

            <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>mybatis-plus-boot-starter</artifactId>
                <version>${mybatis_plus.version}</version>
            </dependency>
            <!--mybatis plus 代码生成器-->
            <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>mybatis-plus-generator</artifactId>
                <version>${mybatis_plus.version}</version>
            </dependency>
            <!--添加 模板引擎 依赖,MyBatis-Plus 支持 Velocity(默认):这是代码生成器需要的依赖-->
            <dependency>
                <groupId>org.apache.velocity</groupId>
                <artifactId>velocity-engine-core</artifactId>
                <version>${velocity-engine-core}</version>
            </dependency>

2. 将common模块对于mybatis的依赖引用注释掉,换为mybatis plus 的


在这里插入图片描述

2. 代码生成器

1. 以权限认证模块为例,复制其java文件夹路径


在这里插入图片描述


在这里插入图片描述

2. 代码生成器,因为每个模块只需要生成一次或几次,与实际业务无关,所以放在测试类中


在这里插入图片描述

package com.test;

import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;

import java.sql.SQLException;

/**
 * 代码生成器
 */
public class MybatisPlusGeneratorUtil{

    /**
     * 执行 run
     */
    public static void main(String[] args) throws SQLException {
        // 使用 FastAutoGenerator 快速配置代码生成器
        FastAutoGenerator.create("jdbc:mysql://localhost:3306/yd_oa_db?serverTimezone=GMT%2B8", "root", "root")
                .globalConfig(builder -> {
                    builder.author("Your Name") // 设置作者
                            .outputDir("yd_oa_java_security/src/main/java/"); // 输出目录
                })
                .packageConfig(builder -> {
                    builder.parent("com.yd_oa_java_cloud.security") // 设置父包名
                            .controller("controller")
                            .entity("entity") // 设置实体类包名
                            .mapper("mapper") // 设置 Mapper 接口包名
                            .service("service") // 设置 Service 接口包名
                            .serviceImpl("service.impl") // 设置 Service 实现类包名
                            .xml("mappers"); // 设置 Mapper XML 文件包名
                })
                .strategyConfig(builder -> {
                    builder.addInclude("sys_user", "sys_role","sys_menu","sys_role_menu","sys_user_role") // 设置需要生成的表名
                            .entityBuilder()
                            .enableLombok() // 启用 Lombok
                            .enableTableFieldAnnotation() // 启用字段注解
                            .controllerBuilder()
                            .enableRestStyle(); // 启用 REST 风格
                })
//                .templateEngine(new FreemarkerTemplateEngine()) // 使用 Freemarker 模板引擎
                .execute(); // 执行生成
    }
}

3. 运行即可生成


在这里插入图片描述

4. 将生成好的mappers文件夹,剪切到resources文件夹下,这样会直接打包到target中,否则会找不到xml文件


在这里插入图片描述

3. 确保xml打包到target中

1. maven.clean后,进行install打包


在这里插入图片描述


2. 确保打包到了target文件夹中


在这里插入图片描述

4. 相关配置

1. yml相关配置

我们要指定mapper.xml文件的位置,代码生成器生成到哪里,就复制那个文件夹的path


在这里插入图片描述


可以指定到nacos配置中心(推荐),也可以指定到自己的配置文件中


在这里插入图片描述

mybatis-plus:
  # 对于 Maven 多模块项目,扫描路径应以 classpath*: 开头,以加载多个 JAR 包中的 XML 文件。
  mapper-locations: classpath*:mappers/*.xml #配置mapper xml文件的路径

2. 分页插件

1. 根目录pom引入3.5.9,还是分两步,先管理版本,然后统一管理jar包


在这里插入图片描述


在这里插入图片描述

        <!--mybatis-plus分页插件,jdk1.8用-->
        <mybatis-plus-jsqlparser-4.9>3.5.9</mybatis-plus-jsqlparser-4.9>
            <!-- jdk 8+ 引入可选模块 -->
            <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>mybatis-plus-jsqlparser-4.9</artifactId>
                <version>${mybatis-plus-jsqlparser-4.9}</version>
            </dependency>

common模块引入依赖


在这里插入图片描述

        <!-- jdk 8+ 引入可选模块 -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-jsqlparser-4.9</artifactId>
        </dependency>

2. 配置分页插件,这里进行扫描mapper经常会报找不到mapper,此时可以先用着,如果具体微服务使用时确实找不到mapper的话,可以往下看


在这里插入图片描述

package com.yd_oa_java_cloud.common.config;

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
@MapperScan(value = "com.yd_oa_java_cloud.*.mapper")
public class MybatisPlusConfig {

    /**
     * 添加分页插件
     */
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); // 如果配置多个插件, 切记分页最后添加
        // 如果有多数据源可以不配具体类型, 否则都建议配上具体的 DbType
        return interceptor;
    }
}

如果具体微服务找不到mapper,就启动类加注解即可


在这里插入图片描述

package com.yd_oa_java_cloud.security;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
//启动类,springIOC容器加载时 扫描的包范围为com.yd_oa_java_cloud,主要要将你想要spring管理的包都放在一个固定路径下
//我们写代码时,经常创建包搞一个什么com.XXXXX.XXXXX,然后配置时就用com.XXXXX
@MapperScan("com.yd_oa_java_cloud.*.mapper")
@SpringBootApplication(scanBasePackages = {"com.yd_oa_java_cloud"})
public class YdOaCloudSecurityRunApplication {
    public static void main(String[] args) {
        SpringApplication.run(YdOaCloudSecurityRunApplication.class,args);
    }
}

5. 测试

1. 我们用一个接口测试分页,传参,json实体类对应

mapper.xml,查询sys_user表,分页查询,第一页,每页2条数据。因为我们使用分页插件,不需要编写limit

使用分页很简单,mapper接口第一个参数是Page类实例对象即可


在这里插入图片描述


在这里插入图片描述

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yd_oa_java_cloud.security.mapper.SysUserMapper">
    <select id="getAllUserPage" resultType="com.yd_oa_java_cloud.security.entity.SysUser">
        select id,username,password from sys_user
    </select>
</mapper>

2. service层接口


在这里插入图片描述


在这里插入图片描述

3. controller接口


在这里插入图片描述

package com.yd_oa_java_cloud.security.controller;

import cn.dev33.satoken.stp.StpUtil;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd_oa_java_cloud.base.entity.vo.ResponseVO;
import com.yd_oa_java_cloud.security.entity.SysUser;
import com.yd_oa_java_cloud.security.service.ISysUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * <p>
 *  前端控制器
 * </p>
 *
 * @author Your Name
 * @since 2025-01-10
 */
@RestController
@RequestMapping("/sysUser")
public class SysUserController {

    @Autowired
    private ISysUserService iSysUserService;

    @PostMapping("/page/{current}/{size}")
    public ResponseVO getAllUserPage(@RequestBody SysUser sysUser, @PathVariable Integer current,@PathVariable Integer size){
        Page<SysUser> sysUserPage = new Page<>(current, size);//构建分页对象
        List<SysUser> sysUserList = iSysUserService.getAllUserPage(sysUserPage);//传入分页对象,分页查询
        return new ResponseVO("success:current="+current+",size="+size,20000,"chenggong:username="+sysUser.getUsername(),sysUserList);
    }

4. 测试结果
在这里插入图片描述

6. 主键生成策略

只需要在实体类的主键字段,添加type指定即可,推荐IdType.ASSIGN_ID或者IdType.ASSIGN_UUID


在这里插入图片描述

SpringCloud+FastAPI 打造AI微服务 postman调用接口层,接口层再通过openfegin,调用注册在nacos上推理层的微服务。注册接口服务(java)和图像ocr服务(python)springcloud业务层。Nacos注册微服务。fastapi推理层。 阅读详情

相关推荐

SpringCloud+Python 混合微服务,如何打造AI分布式业务应用的技术底层?

这里,通过Python 图像识别与文本提取(OCR) 业务为例,实现一个 SpringCloud + Python 混合微服务架构实操。在日常的开发中,图像识别与文本提取(OCR)技术扮演着至关重要的角色,它们极大地促进了业务流程的自动化,提升了用户体验。特别是在互联网和金融行业,这一需求尤为显著。一般来说,图像识别与文本提取(OCR)都是通过python实现。并且在Python生态中,有一个OCR的明星库——PaddleOCR。

架构师尼恩 3630

SaaS应用框架对比:Spring Boot vs Flask vs FastAPI

SaaS(Software as a Service)应用的开发离不开合适的框架选择。在这篇文章中,我们将对三个流行的Web框架进行比较,分别是Spring Boot(Java)、Flask(Python)和FastAPI(Python)。这三者在不同的语言和生态系统中都广受欢迎,具有各自的特点和优势。

benhuyu_yohu的博客 4725

FastAPI vs Spring Boot:一次因yml文件缺失引发的第三方依赖打包血案

本文通过一个真实的Spring Boot配置文件缺失导致的部署事故,深入对比了Spring Boot与FastAPI在配置管理、依赖打包、性能表现等方面的差异。文章详细分析了两个框架的优劣势,提供了实际的代码示例和最佳实践建议,为微服务架构中的技术选择提供了全面的参考。

Where there is a will, there is a way ! 1537

【Python开发】FastAPI 10:SQL 数据库操作

在 FastAPI 中使用 SQL 数据库可以使用多个 ORM 工具,例如 SQLAlchemy、Tortoise ORM 等,类似 Java 的 Mybatis 。这些ORM 工具可以帮助我们方便地与关系型数据库进行交互,如 MySQL 、PostgreSQL等。本篇文章将介绍如何使用 SQLAlchemy 来完成数据库操作,以便让我们在 FastAPI 项目中方便地进行数据存储和查询。

尹煜的博客 1万+

SpringBoot/SpringCloud代码自动化生成工具:Freemarker模板应用

本文还有配套的精品资源,点击获取 简介:本文介绍了一款基于Freemarker模板引擎的SpringBoot/SpringCloud代码生成器,该工具允许用户自定义模板以快速生成项目的各类代码结构。Freemarker作为动态模板语言,在Web开发尤其是Spring框架中被广泛应用于视图层的渲染。通过预设的控制层、Dao层、Model模板等,开发者能够自动化生成与业务逻辑紧...

weixin_42356162的博客 2123

爱投票系统 - fastApi后端项目(一)

一个以python异步web框架fastApi编写的后端项目,支持使用pycharm进行debug调试,使用在云服务器部署后用gunicorn启动4worker。然后使用postman进行压测,iterations: 8000 delay: 0ms,程序依旧正常,且没有继续往上测试了。有兴趣的童鞋可以测试后在评论区告知其的并发

springcloud Eureka整合

前提条件:创建springcloud 工程完成, 添加一个父模块:分别包含payment 支付子模块 和consumer 消费模块 建立工程步骤 1.建立Moudle 2.写POM 3.写YML 4.主启动 5.业务类 SpringBoot版本 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</a

xiaoxiamiqianqian的博客 217

GWAS与eQTL相结合,进一步筛选疾病相关基因

欢迎关注”生信修炼手册”!在GWAS分析结果中,大部分显著的SNP位点都位于非编码区,很难直接挖掘这些位点的调控机制。通常假设与疾病关联的SNP位点通过调控基因表达来发挥作用,而eQTL...

庐州月光的博客 1万+

SpringCloud+Vue+Python人工智能(fastAPI,机器学习,深度学习)前后端架构各功能实现思路——SpringCloud后端——权限管理rbac接口实现

SpringCloud+Vue+Python人工智能(fastAPI,机器学习,深度学习)前后端架构各功能实现思路——主目录(持续更新):https://blog.csdn.net/grd_java/article/details/144986730 SpringCloud+Vue+Python人工智能(fastAPI,机器学习,深度学习)前后端架构各功能实现思路——SpringCloud后端——Sa-Token实现Security权限管理https://blog.csdn.net/gr

殷志鹏的博客 979

【Mac+CLion+STM32+JLink】从零到一:在macOS上构建高效STM32开发与调试工作流

本文详细介绍了在macOS上使用CLion、STM32CubeMX和JLink搭建高效STM32开发与调试工作流的完整指南。从环境准备、CLion深度配置到STM32CubeMX工程实战,再到JLink烧录避坑和串口调试技巧,帮助开发者快速掌握Mac平台下的嵌入式开发全流程。

weixin_28278377的博客 254

dify智能体:日志管理与标注功能详解

日志管理与标注功能是优化聊天助手、Agent、文本生成应用、Chatflow 和工作流等工具交互体验的关键。日志管理允许用户查看、修改和标注日志,帮助回顾和优化交互内容。用户可以通过点击👍或👎按钮快速标注满意度,标注后的日志可用于后续优化和分析。标注功能则支持用户对交互内容进行标记和调整,以提升模型输出质量。此外,用户还可以调整界面语言和时区设置,确保在熟悉的环境中操作。这些功能共同作用,显著提升了交互体验和模型性能。

zyx_bx的博客 2711

Happy:为什么这个开源AI编程客户端值得开发者深度关注?

在AI编程助手日益普及的今天,开发者们面临着一个核心困境:如何在享受AI编程便利性的同时,确保代码安全、保护隐私并实现跨平台无缝协作?Happy作为一款开源的移动端AI编程助手客户端,为Claude Code和Codex等主流AI编程工具提供了端到端加密、多平台支持的解决方案。它不仅解决了传统AI编程工具在移动场景下的控制难题,更通过创新的技术架构为开发者提供了全新的工作流体验。 ## 从传统A

gitblog_01196的博客 656

matlab实现MSK调制解调

文章目录一、要求二、设计三、代码四、结果五、结论 一、要求 画出MSK信号产生的信息、I路、Q路信号对比图以及接收端解调的信息恢复的对比图。 二、设计 1.MSK调制 2.MSK解调 三、代码 clear all;clc; N=20; T=1; fc=10; Fs=100; bitstream=randi([0,1],1,N); bitstream1=2*bitstream-1; b0=1; for i=1:N encode_output(i)=b0*bitstream

Time_book的博客 1万+

个人博客网站系统AI化实战“Spring AI自动生成文章+FastAPI本地模型推理”

AI博客自动化系统设计与实现 本文提出基于Spring AI+FastAPI+本地LLM的博客自动化解决方案,解决传统写作效率低与个性化不足的痛点。系统采用分层架构:前端交互层(Spring Boot)、业务逻辑层(Spring AI)、模型推理层(FastAPI+本地LLM)及数据存储层(MySQL+向量数据库)。关键技术包括动态提示工程、4-bit模型量化、异步生成管道和流式响应,实现单篇技术博客12秒生成(RTX 4090)、成本降至$0.003/篇。方案兼顾数据隐私与高度定制化,为技术内容创作提供高

程序员熊建锟。AI技术知名博主。优快云优质创作者(粉丝1W+)、腾讯云开发者先锋;阿里云专家博主;华为云“云享专家”、51CTO专家博主 1459

SAP 交货成本(运费)

交货成本: 业务场景: 有些产品或供应商,会产生交货成本(运费、关税等) 业务模拟(以运费为例): 1、运费在采购订单体现:计划运费 ME21N创建采购订单,并且包含运费: MIGO收货时: 由上可知,MIGO时运费最终体现在库存(存货)科目中(V),或者价格差异中(S计价时)。 MIRO发票校验: 运费最终体现在单独科目中: 后台配置: 运费在发票时候...

willieyuan的博客 1万+

骚戴笔记公告

骚戴笔记公告

我从不打没有准备的仗! 2万+

Python 第三方库:FastAPI(高性能异步 Web 框架)

它以异步(async/await)机制为核心,兼顾开发效率与运行性能,能够自动生成交互式 API 文档,并原生支持 Pydantic 数据验证与类型提示。1、FastAPI 底层基于 Starlette(异步框架)与 Pydantic(数据验证),性能接近 Go、Node.js 级别。FastAPI 是一个现代、快速(高性能)的 Web 框架,用于基于 Python 构建 API 服务。3、支持 OAuth2、JWT、CORS、WebSocket、后台任务等高级特性。

qq_41176800的博客 1367

Android UI 组件系列(二):Button 进阶用法

在这篇博客中,我们深入探讨了 Button 的进阶用法,重点介绍了如何通过 事件处理 来响应用户的操作,如何使用 自定义样式 来提升按钮的外观,并利用 StateListDrawable 来管理按钮在不同状态下的表现。这些技巧能够帮助你打造更具交互性、视觉吸引力和动态响应的按钮,提升用户体验。

weixin_39339407的博客 1625

SpringCloud+Vue+Python人工智能(fastAPI,机器学习,深度学习)前后端架构各功能实现思路——SpringCloud后端——Gateway网关

【代码】SpringCloud+Vue+Python人工智能(fastAPI,机器学习,深度学习)前后端架构各功能实现思路——SpringCloud后端——Gateway网关。

殷志鹏的博客 1204

Qt/C++ 音视频开发 - FFmpeg 安卓版

通过将 FFmpeg 集成到 Qt/C++ 项目中,我们可以实现强大且灵活的音视频处理功能。本文介绍了在安卓平台上使用 FFmpeg 的基本步骤,包括初始化、解码、处理和编码等。实际应用代码示例展示了如何在安卓设备上播放视频。

走向CTO的路上... 1190

深度学习工具包 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")

AI 接口开发:FastAPI 封装深度学习模型实现高并发请求处理

在AI应用开发中,使用FastAPI框架封装深度学习模型能高效处理高并发请求。FastAPI基于Starlette和Pydantic,支持异步编程,性能优异(每秒可处理数千请求)。我将逐步解释实现过程,包括环境设置、模型加载、API设计、并发优化和代码示例。此方案已在多个AI项目中验证,能支持每秒数千请求(例如,在AWS GPU实例上)。通过FastAPI封装深度学习模型,能高效处理高并发请求。这减少延迟并提高并发性能。初始化FastAPI应用,定义全局变量存储模型,确保单例模式(只加载一次模型)。

askjhdjkh的博客 1027

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Kook Zimage真实幻想Turbo微服务化部署:SpringBoot+FastAPI完整方案

本文介绍了如何在星图GPU平台上自动化部署🔮 Kook Zimage 真实幻想 Turbo镜像,实现微服务化的AI图像生成能力。通过SpringBoot+FastAPI架构,用户可快速搭建独立的图像生成服务,适用于内容创作平台的幻想风格图片生成,如营销海报设计等场景,提升资源利用率和系统稳定性。

weixin_42591908的博客 365

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

【神经风格迁移:工程化】26、SpringBoot+FastAPI跨语言架构实战:高可用神经风格迁移微服务设计与实现

本文介绍了基于Spring Boot和FastAPI的跨语言微服务架构,用于实现高可用神经风格迁移服务。针对算法团队(Python)与企业系统(Java)的技术栈差异,提出Python算法服务封装方案,采用FastAPI框架设计RESTful接口,包括单图/批量风格迁移接口,并详细展示了核心接口实现、参数标准化处理及错误处理机制。该架构有效解决了跨语言协作难题,兼具高性能与可维护性。

2025博客之星Top81。专注AI工程化与架构实战。从分布式思维到模型部署,用工程化视角为你厘清AI落地的真实路径。 1198

Python小酷库系列:pyNest,把FastAPI程序写出Spring的味道

它站在FastAPI的基础,在python中实现了NestJS风格,让你的代码有了Spring的味道。

GeekABC 946

SpringCloud + Python 混合微服务架构,打造AI分布式应用的技术底层

SpringCloud + Python 混合微服务架构,打造AI分布式应用的技术底层

安静的软件工程师 2583

SpringCloud+Vue+Python人工智能(fastAPI,机器学习,深度学习)前后端架构各功能实现思路——SpringCloud后端——Sa-Token实现Security权限管理

【代码】SpringCloud+Vue+Python人工智能(fastAPI,机器学习,深度学习)前后端架构各功能实现思路——SpringCloud后端——Sa-Token实现Security权限管理。

殷志鹏的博客 936
上一篇: SpringCloud+Vue+Python人工智能(fastAPI,机器学习,深度学习)前后端架构各功能实现思路——SpringCloud后端——Gateway网关
下一篇: SpringCloud+Vue+Python人工智能(fastAPI,机器学习,深度学习)前后端架构各功能实现思路——SpringCloud后端——Sa-Token实现Security权限管理
ydenergy_殷志鹏
博客等级 码龄7年 5885粉丝 543原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

ydenergy_殷志鹏

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

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

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

打赏作者

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

抵扣说明:

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

余额充值