基于LangChain、LangGraph与LangSmith构建医疗问诊AI Agent全流程实战

基于LangChain、LangGraph与LangSmith构建医疗问诊AI Agent全流程解析 这次我们来看一个医疗问诊 Agent 的构建过程,它不是一个现成的、可以一键启动的软件包,而是一个基于 LangChain、LangGraph 和 LangSmith 三大框架的技术实现方案。如果你正在学习如何构建一个复杂、可编排的 AI Agent,特别是想了解如何将 LangChain 的模块化、LangGraph 的状态流图、LangSmith 的调试监控结合起来解决实际问题,这篇文章就是为你准备的。 本文的核心不是提供一个开箱即用的“医疗问诊.exe”,而是通过一个具体的医疗场景,带你彻底看懂这三个 阅读详情

这次我们来看一个医疗问诊 Agent 的完整构建过程。这个项目不是简单的概念介绍,而是通过一个具体的应用场景,帮你彻底理清 LangChain、LangGraph 和 LangSmith 这三个核心框架在实际开发中各自扮演什么角色、如何协同工作,以及如何从零开始搭建一个能稳定运行的智能体。

如果你正在学习 AI Agent 开发,或者想了解如何将大模型能力整合进业务流程,这篇文章可以直接收藏。我们将重点关注:如何用 LangChain 组织工具链,如何用 LangGraph 编排复杂的决策流程,以及如何用 LangSmith 来监控、调试和优化整个 Agent 的运行。整个过程不涉及复杂的硬件部署,核心是代码逻辑和架构设计。

1. 核心能力速览

能力项 说明
项目类型 AI Agent 应用开发,具体为医疗问诊场景
核心框架 LangChain(工具与记忆)、LangGraph(流程编排)、LangSmith(可观测性)
主要功能 模拟医生问诊流程,进行多轮对话、症状收集、初步分析与建议
技术门槛 中等,需熟悉 Python 及大模型基础 API 调用,无需特定 GPU
启动方式 本地 Python 脚本启动,或封装为 FastAPI 等 Web 服务
是否支持 API 是,核心 Agent 可作为服务被调用
是否支持“批量任务” 是,可通过异步或队列处理多个并行的问诊会话
适合场景 学习 Agent 开发、构建专业领域对话系统、理解 LangChain 生态

2. 适用场景与使用边界

这个医疗问诊 Agent 项目主要适合以下几类读者和场景:

  • AI 应用开发者/学习者 :想通过一个完整案例,系统性掌握 LangChain、LangGraph、LangSmith 的使用方法和集成技巧。
  • 垂直领域对话系统探索者 :医疗问诊是一个典型的、流程清晰的领域,其设计模式可以迁移到法律咨询、金融客服、技术支持等场景。
  • 希望提升 Agent 稳定性的工程师 :LangSmith 提供的可观测性工具,是解决 Agent 运行时“黑盒”问题、调试复杂逻辑的关键。

需要明确的使用边界:

  1. 非真实医疗诊断工具 :本项目仅为技术演示,其生成的任何症状分析、健康建议都 不能 替代专业医生的诊断。严禁将其用于真实的医疗诊断场景。
  2. 知识依赖大模型 :Agent 的医学知识完全来源于所连接的大语言模型(如 GPT-4、Claude、Qwen 等)以及可能集成的外部知识库(RAG)。其准确性和可靠性受限于模型本身的知识截止日期与准确性。
  3. 合规与隐私 :如果处理真实的用户问诊数据,必须严格遵守数据隐私法规(如 HIPAA、GDPR 等),对用户个人信息进行脱敏处理,并确保数据传输和存储的安全。
  4. 场景局限性 :当前演示的流程相对标准化,对于极其复杂、危急或需要多模态检查(如影像分析)的医疗情况,此 Agent 架构需要大幅扩展和接入专业系统。

3. 环境准备与前置条件

在开始编码之前,你需要准备好以下环境。我们的开发将主要在 CPU 环境下进行,因为核心是逻辑编排而非模型训练。

基础环境清单:

  • 操作系统 :Windows 10/11, macOS, 或 Linux (Ubuntu 20.04+ 推荐)。本文示例基于 Linux/macOS 命令行,Windows 用户可使用 WSL 或 Git Bash。
  • Python 版本 :Python 3.10 或 3.11。这是 LangChain 等库兼容性较好的版本。
  • 包管理工具 : pip 或 conda 。
  • 代码编辑器 :VS Code, PyCharm 等任选。
  • 大模型 API 密钥 :你需要一个可用的 LLM API 服务。我们将以 OpenAI GPT 系列(或兼容 OpenAI API 的本地模型)为例,你需要准备相应的 API_KEY 和 BASE_URL (如果使用非官方服务)。

关键依赖库: 我们将通过一个 requirements.txt 文件来管理依赖。核心库包括:

  • langchain & langchain-community : 提供基础组件(LLM、工具、记忆等)。
  • langgraph :用于构建有状态的、多步骤的工作流图。
  • langsmith :用于跟踪、评估和监控 Agent 运行。
  • openai :用于调用 OpenAI 或兼容 API。
  • python-dotenv :管理环境变量。

4. 安装部署与启动方式

首先,创建项目目录并安装依赖。

# 1. 创建项目目录并进入
mkdir medical-agent-demo && cd medical-agent-demo

# 2. 创建虚拟环境 (可选但推荐)
python -m venv venv
# Windows: venv\Scripts\activate
# Linux/macOS: source venv/bin/activate

# 3. 创建 requirements.txt 文件
cat > requirements.txt << EOF
langchain>=0.1.0
langchain-community>=0.0.10
langgraph>=0.0.20
langsmith>=0.1.0
openai>=1.0.0
python-dotenv>=1.0.0
EOF

# 4. 安装依赖
pip install -r requirements.txt

接下来,设置环境变量。创建一个 .env 文件来安全存储你的 API 密钥和 LangSmith 配置。

# 创建 .env 文件
cat > .env << EOF
# 你的 OpenAI 兼容 API 配置
OPENAI_API_KEY=sk-your-openai-api-key-here
OPENAI_BASE_URL=https://api.openai.com/v1  # 若使用其他服务,请替换

# LangSmith 配置(用于追踪和调试,注册后获取)
LANGCHAIN_TRACING_V2=true
LANGCHAIN_ENDPOINT=https://api.smith.langchain.com
LANGCHAIN_API_KEY=ls-your-langsmith-api-key-here
LANGCHAIN_PROJECT=Medical-Agent-Demo  # 在 LangSmith 上看到的项目名
EOF

重要 :你需要去 LangSmith 官网 注册并获取 LANGCHAIN_API_KEY 。虽然不配置 LangSmith 也能运行 Agent,但你将无法获得强大的调试和追踪能力。

至此,基础环境就搭建完成了。我们的“启动”就是运行一个 Python 脚本。下面进入核心部分:构建 Agent。

5. 功能测试与效果验证:构建医疗问诊 Agent

我们将分步骤构建 Agent,并在每一步进行验证。最终目标是形成一个可以执行“症状收集 -> 初步分析 -> 给出建议”流程的智能体。

5.1 第一步:定义工具 - 医生的“听诊器”

在 LangChain 中,工具(Tools)是 Agent 与外界交互的手段。对于问诊 Agent,我们可以定义一些工具来获取结构化信息或执行特定操作。

我们先创建一个 tools.py 文件:

# tools.py
from langchain.tools import tool
from typing import Optional

@tool
def assess_symptom_severity(symptom: str, duration_hours: int) -> str:
    """根据症状描述和持续时间(小时)初步评估严重程度。"""
    severity_levels = {
        (0, 24): f“症状‘{symptom}’持续时间较短({duration_hours}小时),可能为急性、轻微问题,建议观察休息。”,
        (24, 72): 
基于LangChain生态构建医疗问诊Agent:从工具链到工作流编排 这次我们来看一个医疗问诊 Agent 的构建过程,它不是一个单一的模型,而是一个由 LangChain、LangGraph 和 LangSmith 三大组件协同工作的智能系统。这个项目清晰地展示了如何将一个复杂的现实任务(医疗问诊)拆解、编排并监控,最终形成一个可运行的 AI 应用。对于想入门 AI Agent 开发,特别是想理解 LangChain 生态如何落地的开发者来说,这是一个绝佳的案例。 这个项目的核心价值在于,它用“医疗问诊”这个具体场景,把 LangChain(工具链)、LangGraph(流 阅读详情

相关推荐

基于LangChain、LangGraph与LangSmith构建医疗问诊Agent实战指南

在大模型应用开发中,Agent(智能体)已成为处理复杂任务的核心架构,它通过整合工具调用、知识检索与状态管理,实现超越单一问答的自动化工作流。其原理在于将大语言模型(LLM)作为决策中枢,结合外部工具与数据源,通过ReAct等模式进行推理与行动。这种技术价值在于显著提升了AI系统在专业领域的可靠性与实用性。在应用场景上,Agent广泛适用于需要多步骤决策、动态交互的领域,例如智能客服、数据分析与自动化办公。本文聚焦于医疗健康这一典型场景,通过一个完整的医疗问诊Agent项目,详细演示了如何利用LangCha

weixin_33767813的博客 1863

LangChain、LangGraph与LangSmith实战:构建医疗问诊智能体全流程

大家好,我是专注于AI应用开发的技术博主。在探索大模型落地的过程中,你是否也遇到过这样的困惑:看了一堆LangChain、LangGraph、LangSmith的教程,概念都懂,但一到实际项目,还是不知道如何将它们串联起来,构建一个真正能跑起来的智能体(Agent)?特别是当业务场景复杂,需要多步骤决策和状态管理时,更是无从下手。 本文将以一个 医疗问诊智能体(Medical Consultation Agent) 的完整构建过程为例,手把手带你从零到一,串联起LangChain、LangGraph和Lan

weixin_33795093的博客 448

基于LangChain与LangGraph构建医疗问诊智能体:从原理到实战

最近在尝试将大语言模型(LLM)应用到具体业务场景时,很多开发者都会遇到一个共同的困惑:如何让一个“聪明”的模型,变成一个能稳定、可靠、按流程完成复杂任务的“智能体”(Agent)?尤其是在医疗、金融、客服这类对流程和准确性要求极高的领域,单纯调用模型API往往力不从心。 本文将以一个 医疗问诊智能体 的完整构建过程为例,手把手带你理解 LangChain、LangGraph 和 LangSmith 这三个核心工具如何各司其职,协同工作。你将看到如何从一个简单的想法出发,逐步搭建起一个具备导诊、分诊、多轮对

526

LangChain与LangGraph实战:构建可调试的医疗问诊智能体

这类主题最值得先看的不是框架列表,而是它到底解决了什么实际问题。一个医疗问诊 Agent,核心是把大模型、知识库和业务流程串联起来,让 AI 能像医生一样,通过多轮对话完成信息收集、初步判断和分诊建议。这背后,LangChain 负责基础编排,LangGraph 处理复杂的状态流转,LangSmith 则用来监控和调试整个流程。如果你正在评估或开发类似的 AI 应用,这篇文章会带你走一遍从零到一的完整路径,重点不是框架 API 调用,而是如何把零散的工具组合成一个能稳定运行、可调试、能迭代的智能体。 我建议

weixin_30883311的博客 384

LangChain、LangGraph与LangSmith:构建可控AI智能体的完整工程化方案

在构建复杂AI应用时,开发者常面临如何让模型执行多步骤、有状态任务的核心挑战。这涉及到智能体(Agent)的概念,即能够感知环境、规划并执行动作的AI系统。其核心原理在于将大语言模型与外部工具、记忆模块和状态管理相结合,通过标准化接口实现组件化。这种工程化方法的技术价值在于提升了AI应用的可靠性、可控性和可维护性,使其从简单的问答模式升级为能够处理复杂业务流程的智能系统。典型的应用场景包括智能客服、自动化工作流和决策支持系统。本文以医疗问诊助手为例,深入剖析了如何利用LangChain提供标准化组件、Lan

weixin_33912638的博客 485

LangChain、LangGraph与LangSmith:构建复杂AI智能体的完整技术栈解析

在实际 AI 应用开发中,构建一个能处理复杂、多步骤任务的智能体(Agent)是核心挑战。一个简单的问答链(Chain)无法应对需要动态决策、状态管理和工具调用的场景,比如一个模拟真实流程的医疗问诊系统。这个系统需要理解用户症状、决定是否需要分诊、调用不同的医学知识库工具、管理对话历史,并在必要时将复杂问题拆解。这正是 LangChain、LangGraph 和 LangSmith 这三个工具组合起来要解决的问题。本文将从一个具体的“医疗问诊 Agent”项目出发,为你拆解这三个核心框架的分工、协作方式以及

weixin_30740581的博客 492

基于LangChain与LangGraph构建医疗问诊AI Agent:从原理到实践

1. 为什么从医疗问诊 Agent 开始理解 LangChain 全家桶最有效 如果你正在关注 AI Agent 开发,尤其是想用 LangChain、LangGraph 和 LangSmith 来构建点实际的东西,那么“医疗问诊”这个场景几乎是完美的切入点。它不像“写首诗”那么简单,也不像“全自动股票交易”那么复杂且充满风险。一个问诊 Agent 会逼着你面对 Agent 开发中最核心的几个问题:如何让大模型理解专业领域知识、如何设计多步骤的推理流程、如何持久化对话历史、以及如何监控和调试这个“黑盒”系统

weixin_30613343的博客 146

医疗问诊Agent技术架构:LangChain、LangGraph与LangSmith实践

智能对话系统在现代医疗领域展现出巨大潜力,其核心技术架构由语言模型、流程编排和监控系统组成。LangChain作为基础框架,通过模块化设计实现医疗专用工具链开发,包括症状评估、知识检索等核心功能。LangGraph采用图计算思想构建动态诊疗路径,支持基于患者状态的流程跳转。结合LangSmith的实时监控能力,可确保医疗AI系统的响应质量与合规性。这种技术组合特别适合急诊分诊、慢性病管理等场景,其中症状分类准确率和循证医学支持成为关键评估指标。通过结构化工具定义和医疗数据标准化处理,开发者能构建符合HIPA

weixin_32466193的博客 251

LangChain、LangGraph与LangSmith:构建生产级AI Agent的完整技术栈实战

在构建一个能真正理解用户意图、执行复杂任务并可靠运行的 AI Agent 时,很多开发者都曾面临过这样的困境:用 LangChain 快速搭建的原型,一旦涉及多步骤决策、状态管理或需要人工干预的复杂流程,代码就会变得难以维护和调试。本文将从一个具体的“医疗问诊 Agent”项目出发,完整拆解如何利用 LangChain、LangGraph 和 LangSmith 三大工具,构建一个从零到一、从原型到生产级的智能体系统。无论你是刚接触 Agent 概念的新手,还是希望将现有 LangChain 项目升级为更健

weixin_29046611的博客 316

保姆级避坑指南:在Ubuntu 22.04上用ROS2 Humble搞定TurtleBot3的SLAM与导航(附5个常见报错解决方案)

本文提供了一份详细的Ubuntu 22.04上使用ROS2 Humble和TurtleBot3进行SLAM建图与导航的避坑指南,涵盖Gazebo启动失败、场景加载问题、环境变量设置、GLIBCXX版本冲突及Nav2参数配置等5个常见报错的解决方案,帮助开发者高效完成机器人导航项目。

weixin_29062823的博客 286

科研党必备:5分钟搞定Arxiv论文批量导入NoteExpress(附PDF自动下载技巧)

本文为科研人员提供了一套高效的自动化工作流,实现从Arxiv批量检索论文、自动下载PDF到无缝导入NoteExpress的全过程。通过Python脚本和NASA ADS等工具,可大幅提升文献管理效率,特别适合需要追踪前沿动态的研究生和科研团队。

orange的博客 398

基于STM32的智能火灾报警系统设计:多传感器融合与远程控制实现

本文详细介绍基于STM32单片机的智能火灾报警系统设计,采用多传感器融合技术(烟雾、温度、火焰检测)实现高精度火灾识别。系统集成远程控制与手机APP监控,通过加权决策算法降低误报率,提供多级响应策略,确保火灾预警的准确性与可靠性。

u5v6w7的博客 1103

Stata面板数据OLS回归分析实战指南

OLS回归作为计量经济学的核心分析方法,通过最小化残差平方和实现参数估计,广泛应用于经济学实证研究。其技术价值在于模型简洁、结果易于解释,特别适合处理面板数据中的复杂关系。在实际应用中,配合robust标准误能有效解决异方差问题,而固定效应模型则可控制个体特异性。本文以Stata软件为例,详细演示从数据导入、描述性统计到混合OLS和固定效应模型构建的全流程,重点解析面板数据特有的格式设定、模型选择标准以及结果呈现技巧,为经济学研究者提供可直接复用的分析框架。

weixin_29051811的博客 268

MobaXterm详细使用教程

当然MobaXterm的功能远不止这些,但这些是最基本,最常用的,因此先拿出来讲。点击确定后,输入密码(输入密码时并不会显示,只管输入后按确定即可,第一次登陆成功后会提示保存密码,一般选择同意),就可以连接上虚拟机了。(2) 我们可以直接apt-get安装vim等常用功能(或者官网下载插件),实现在windows下模拟linux环境,这样就可以使用vi命令准备INCAR文件,也可以使用Gnuplot进行绘图。支持 Unix 命令(bash,ls,cat,sed,grep,awk,rsync,…

博客 4万+

VMware + ubuntu20.04 + qemu安装

遇到报错可参考:(从ubuntu裸系统开始安装)

NosONE 3230

uniapp [安卓苹果App端] - 详细实现PDF预览功能在线预览PDF文档,Uniapp App端实现pdf文件预览在线预览pdf二进制文件流、本地pdf文档、PDF文件地址url路径(解决白屏

uni-app,安卓Android,苹果ios,安卓app端,苹果App端,uniapp苹果安卓app,uniapp在线预览pdf功能,在安卓苹果app平台实现PDF的预览查看,uniappApp端实现pdf文件预览,UNIAPP在线预览PDF文档,Uniappapp在线预览pdf文件流,从后端接口里获取pdf文件如何转成链接预览,预览pdf的插件,uni-app的pdf预览功能,uniapp使用pdf.js插件预览pdf文件,预览pdf白屏没有报错,打开后没反应,打开是空白,加载PDF时发生错误,如

🏆 前端领域优质创作者 1万+

杰理AC695N芯片跑iic接口的oled驱动分享

本文介绍了一个基于IIC接口的0.96寸OLED显示屏驱动程序,适用于SSD1306控制器。驱动采用软件模拟IIC方式,支持字符、数字、字符串、汉字和图片显示,测试平台为杰理AC695N系列芯片。硬件参数包括128×64分辨率,IIC接口(地址0x78),使用IO_PORTA_02(SDA)和IO_PORTA_03(SCL)引脚。驱动包含OLED主文件(oled.c/h)、软件IIC实现(soft_iic.c/h)和字体/图片数据文件(oledfont.h/bmp.h),可通过修改soft_iic.h中的引

qq_42014563的博客 882

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

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

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

上一篇: STM32F302VC与A3910电机驱动方案详解
下一篇: CKA备考37天实战指南:kubectl肌肉记忆与YAML手写训练
deepfuture
博客等级 码龄17年 210粉丝 1287原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值