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

AI智能体研发之路-模型篇(五):pytorch vs tensorflow框架DNN网络结构源码级对比

博客导读:

《AI—工程篇》

AI智能体研发之路-工程篇(一):Docker助力AI智能体开发提效

AI智能体研发之路-工程篇(二):Dify智能体开发平台一键部署

AI智能体研发之路-工程篇(三):大模型推理服务框架Ollama一键部署

AI智能体研发之路-工程篇(四):大模型推理服务框架Xinference一键部署

AI智能体研发之路-工程篇(五):大模型推理服务框架LocalAI一键部署

《AI—模型篇》

AI智能体研发之路-模型篇(一):大模型训练框架LLaMA-Factory在国内网络环境下的安装、部署及使用

AI智能体研发之路-模型篇(二):DeepSeek-V2-Chat 训练与推理实战

AI智能体研发之路-模型篇(三):中文大模型开、闭源之争 

AI智能体研发之路-模型篇(四):一文入门pytorch开发

AI智能体研发之路-模型篇(五):pytorch vs tensorflow框架DNN网络结构源码级对比

目录

一、引言

二、pytorch模型结构定义

三、tensorflow模型结构定义

四、总结


一、引言

本文是上一篇AI智能体研发之路-模型篇(四):一文入门pytorch开发的番外篇,对上文中pytorch的网络结构和tensorflow的模型结构部分进一步详细对比与说明(水一篇为了得到当天的流量卷哈哈,如果想更详细的了解pytorch,辛苦移步上一篇哈。

二、pytorch模型结构定义

def __init__(self, input_size, hidden_size, output_size):super(ThreeLayerDNN, self).__init__()self.fc1 = nn.Linear(input_size, hidden_size)  # 第一层全连接层self.fc2 = nn.Linear(hidden_size, hidden_size)  # 第二层全连接层self.fc3 = nn.Linear(hidden_size, output_size)  # 输出层self.sigmoid = nn.Sigmoid()

首先定义了一个名为`ThreeLayerDNN`的类,它是基于PyTorch框架的,用于构建一个具有三个全连接层(也称为密集层)的深度神经网络,特别适用于二分类问题。下面是对代码的详细解释:

  • `__init__`: 这是Python中的构造函数,当创建`ThreeLayerDNN`类的新实例时会被调用。
  •  `super(ThreeLayerDNN, self).__init__()`: 这行代码调用父类的初始化方法。因为`ThreeLayerDNN`继承自PyTorch的`nn.Module`类,这一步确保了`ThreeLayerDNN`具有`nn.Module`的所有基本属性和方法。
  •  `self.fc1 = nn.Linear(input_size, hidden_size)`: 这里定义了神经网络的第一层全连接层(fully connected layer)。`input_size`是输入数据的特征数量,`hidden_size`是这一层的神经元数量。全连接层意味着输入数据的每个特征都将与这一层的每个神经元相连接。
  •  `self.fc2 = nn.Linear(hidden_size, hidden_size)`: 定义了第二层全连接层,结构与第一层相同,保持了相同的隐藏层大小,这在某些架构中用于加深网络而不立即增加模型复杂度。
  •  `self.fc3 = nn.Linear(hidden_size, output_size)`: 这是网络的输出层,其输入大小与隐藏层相同,输出大小为`output_size`,对于二分类问题,通常为1。
  •  `self.sigmoid = nn.Sigmoid()`: 这行代码定义了一个Sigmoid激活函数,它将在网络的输出层之后应用。Sigmoid函数将输出映射到(0, 1)之间,非常适合二分类问题,其中输出可以解释为属于正类的概率。

综上所述,这段代码构建了一个基础的神经网络结构,适合进行二分类任务,通过全连接层提取特征,并使用Sigmoid函数将网络输出转换为概率估计。

三、tensorflow模型结构定义

model = Sequential([Dense(512, input_shape=(X_train.shape[1],)),  # 第一层Activation('relu'),Dense(512),  # 第二层Activation('relu'),Dense(1),  # 输出层Activation('sigmoid')  # 二分类使用sigmoid
])

使用Keras库(现在是TensorFlow的一个部分)定义了一个简单的深度学习模型,具体来说是一个顺序(Sequential)模型,适用于进行二分类任务。下面是对这段代码的详细解释:

  • Sequential模型: 这是一种线性堆叠层的模型,适合于简单的前向传播神经网络。

  • Dense层: 也称为全连接层,每个神经元都与前一层的所有神经元相连。

    • Dense(512, input_shape=(X_train.shape[1],)): 第一层,有512个神经元,input_shape=(X_train.shape[1],)指定了输入数据的形状,这里假设X_train是一个二维数组,其中每一行是一个样本,X_train.shape[1]表示每个样本的特征数量。
    • Dense(512): 第二层,同样有512个神经元,由于是在Sequential模型中,它自动接收前一层的输出作为输入。
    • Dense(1): 输出层,只有一个神经元,适用于二分类问题。
  • Activation层: 激活函数层,为神经网络引入非线性。

    • Activation('relu'): 使用ReLU(Rectified Linear Unit)作为激活函数,它在输入大于0时输出输入值,小于0时输出0,有助于解决梯度消失问题。
    • 最后一层使用Activation('sigmoid'): 二分类任务中,输出层常用sigmoid激活函数,将输出映射到(0, 1)之间,便于解释为概率。

四、总结

两种框架在定义模型结构时思路基本相同,pytorch基于动态图,更加灵活。tensorflow基于静态图,更加稳定。 

如果还有时间,可以看看我的其他文章:

 《AI—工程篇》

AI智能体研发之路-工程篇(一):Docker助力AI智能体开发提效

AI智能体研发之路-工程篇(二):Dify智能体开发平台一键部署

AI智能体研发之路-工程篇(三):大模型推理服务框架Ollama一键部署

AI智能体研发之路-工程篇(四):大模型推理服务框架Xinference一键部署

AI智能体研发之路-工程篇(五):大模型推理服务框架LocalAI一键部署

《AI—模型篇》

AI智能体研发之路-模型篇(一):大模型训练框架LLaMA-Factory在国内网络环境下的安装、部署及使用

AI智能体研发之路-模型篇(二):DeepSeek-V2-Chat 训练与推理实战

AI智能体研发之路-模型篇(三):中文大模型开、闭源之争​​​​​​​ 

AI智能体研发之路-模型篇(四):一文入门pytorch开发

AI智能体研发之路-模型篇(五):pytorch vs tensorflow框架DNN网络结构源码级对比

相关文章:

AI智能体研发之路-模型篇(五):pytorch vs tensorflow框架DNN网络结构源码级对比

博客导读: 《AI—工程篇》 AI智能体研发之路-工程篇(一):Docker助力AI智能体开发提效 AI智能体研发之路-工程篇(二):Dify智能体开发平台一键部署 AI智能体研发之路-工程篇(三&am…...

电商物流查询解决方案助力提升消费者体验

截至2023年12月,中国网络购物用户规模达9.15亿人,占网民整体的83.8%。这一庞大的数字不仅展现了电子商务的蓬勃发展,也标志着数字零售企业营销战略的转变——从以产品和流量为核心,到用户为王的新阶段。因此,提升消费者…...

【深度密码】神经网络算法在机器学习中的前沿探索

目录 🚝前言 🚍什么是机器学习 1. 基本概念 2. 类型 3. 关键算法 4. 应用领域 5. 工作流程 🚋什么是神经网络 基本结构 🚂神经网络的工作原理 前向传播(Forward Propagation): 损失函…...

搭载算能 BM1684 芯片,面向AI推理计算加速卡

搭载算能 BM1684 芯片,是面向AI推理的算力卡。可集成于服务器、工控机中,高效适配市场上所有AI算法,实现视频结构化、人脸识别、行为分析、状态监测等应用,为智慧城市、智慧交通、智慧能源、智慧金融、智慧电信、智慧工业等领域进…...

Python开发 我的世界 Painting-the-World: Minecraft 像素图片生成器

简介 Painting-the-World 是一款创新的工具,专为《我的世界》(Minecraft) 玩家及创作者设计,旨在将数字图片转变为游戏内的像素艺术。通过利用 RCON (Remote Console) 协议,本项目可以直接与《我的世界》服务器对话,根据输入的图…...

【经验分享】盘点“食用“的写文素材

一、构建框架 简介 1. 身份 擅长领域 2. 博客内容 3. 目前示例: 阿里云专家博主,华为云-云享专家,专注前、后端开发 博客内容:前后端实战教学、源码剖析、常见面试知识解析、算法题解与心得、日常考研总结等 目前正在备战考研&…...

实习碰到的问题w1

1.vueelementUI在输入框中按回车键会刷新页面 当一个 form 元素中只有一个输入框时&#xff0c;在该输入框中按下回车应提交该表单。如果希望阻止这一默认 行为&#xff0c;可以在 <el-form> 标签上添加 submit.native.prevent 。 参考&#xff1a;element-ui 表单 form …...

c#实现BPM系统网络传输接口,http协议,post

BPM通过http协议实现网络传输&#xff0c;语言使用.net(c#)&#xff0c;在这里只提供一个接口&#xff0c;具体代码如下,请参照&#xff1a; public string MakeRequest(string parameters) { ServicePointManager.ServerCertificateValidationCallback new Syst…...

如何修改开源项目中发现的bug?

如何修改开源项目中发现的bug&#xff1f; 目录 如何修改开源项目中发现的bug&#xff1f;第一步&#xff1a;找到开源项目并建立分支第二步&#xff1a;克隆分支到本地仓库第三步&#xff1a;在本地对项目进行修改第四步&#xff1a;依次使用命令行进行操作注意&#xff1a;Gi…...

结构设计模式 - 代理设计模式 - JAVA

代理设计模式 一. 介绍二. 代码示例2.1 定义 CommandExecutor 类2.2 定义 CommandExecutorProxy代理类2.3 模拟客户端2.4 测试结果 三. 结论 前言 这是我在这个网站整理的笔记,有错误的地方请指出&#xff0c;关注我&#xff0c;接下来还会持续更新。 作者&#xff1a;神的孩子…...

企业了解这些cad图纸加密方法,再也不怕图纸被盗了!

在竞争激烈的商业环境中&#xff0c;企业的核心技术、设计图纸和创意是维持其市场地位和竞争优势的关键。CAD图纸作为产品设计的重要载体&#xff0c;其安全性自然成为企业关注的焦点。为了确保CAD图纸不被非法获取或盗用&#xff0c;企业需要采取一系列有效的加密方法。本文将…...

# 详解 JS 中的事件循环、宏/微任务、Primise对象、定时器函数,以及其在工作中的应用和注意事项

为什么会突然想到写这么一个大杂烩的博文呢&#xff0c;必须要从笔者几年前的一次面试说起 当时的我年轻气盛&#xff0c;在简历上放了自己的博客地址&#xff0c;而面试官应该是翻了我的博客&#xff0c;好几道面试题都是围绕着我的博文来提问 其中一个问题&#xff0c;直接…...

神经网络与深度学习——第14章 深度强化学习

本文讨论的内容参考自《神经网络与深度学习》https://nndl.github.io/ 第14章 深度强化学习 深度强化学习 强化学习&#xff08;Reinforcement Learning&#xff0c;RL&#xff09;&#xff0c;也叫增强学习&#xff0c;是指一类从与环境交互中不断学习的问题以及解决这类问题…...

centOS 编译C/C++

安装C和C编译器 yum -y install gcc*查看CenterOS系统信息 cat /etc/system-releaseCentOS Linux release 8.2.2004 (Core)查看gcc版本 gcc --versiongcc (GCC) 8.5.0 20210514 (Red Hat 8.5.0-4) Copyright (C) 2018 Free Software Foundation, Inc. This is free software…...

java——网络原理初识

T04BF &#x1f44b;专栏: 算法|JAVA|MySQL|C语言 &#x1faf5; 小比特 大梦想 目录 1.网络通信概念初识1.1 IP地址1.2端口号1.3协议1.3.1协议分层协议分层带来的好处主要有两个方面 1.3.2 TCP/IP五层 (或四层模型)1.3.3 协议的层和层之间是怎么配合工作的 1.网络通信概念初识…...

js怎么判断是否为手机号?js格式校验方法

数据格式正确与否是表单填写不可避免的一个流程&#xff0c;现整理一些较为常用的信息格式校验方法。 判断是否为手机号码 // 判断是否为手机号码 function isPhoneNumber(phone) {return /^[1]\d{10}$/.test(phone) }判断是否为移动手机号 function isChinaMobilePhone(phon…...

深入理解Java中的方法重载:让代码更灵活的秘籍

关注微信公众号 “程序员小胖” 每日技术干货&#xff0c;第一时间送达&#xff01; 引言 在Java编程的世界里&#xff0c;重载(Overloading)是一项基础而强大的特性&#xff0c;它让我们的代码更加灵活、可读性强。对于追求高效、优雅编码的开发者而言&#xff0c;掌握方法重…...

鸿蒙ArkTS声明式开发:跨平台支持列表【显隐控制】 通用属性

显隐控制 控制组件是否可见。 说明&#xff1a; 开发前请熟悉鸿蒙开发指导文档&#xff1a; gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md点击或者复制转到。 从API Version 7开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本…...

每日一题——Java编程练习题

题目&#xff1a; 键盘录入两个数字number1和number2表示一个范围&#xff0c;求这个范围之内的数字和。 我写的代码&#xff1a; public class Test {public static void main(String[] args) {Scanner sc new Scanner(System.in);System.out.print("输入第一个数:&q…...

java编辑器中如何调试程序?

目录 如何调试java程序? 待续、更新中 如何调试java程序? 1 看错误信息 2 相应位置输入输出信息: System.out.println("测试信息1 "); 以此查看哪条语句未进行输入 待续、更新中 1 顿号、: 先使用ctrl. &#xff0c;再使用一遍切回 2 下标: 21 2~1~ 3 上标: 2…...

PyTorch 2.5快速部署指南:3步开启你的AI模型训练之旅

PyTorch 2.5快速部署指南&#xff1a;3步开启你的AI模型训练之旅 1. PyTorch 2.5环境准备 PyTorch 2.5作为当前最流行的深度学习框架之一&#xff0c;带来了多项性能优化和新特性。在开始之前&#xff0c;我们需要确保环境配置正确。 1.1 系统要求检查 操作系统&#xff1a…...

自媒体人的秘密武器:OpenClaw+nanobot自动生成视频字幕文件

自媒体人的秘密武器&#xff1a;OpenClawnanobot自动生成视频字幕文件 1. 为什么我们需要自动化字幕生成 作为一个长期在视频创作领域摸索的自媒体人&#xff0c;我深知字幕制作这个环节有多折磨人。曾经为了给一段10分钟的视频添加字幕&#xff0c;我需要反复暂停播放、手动…...

绝区零智能协同系统:AI驱动的游戏效率倍增解决方案

绝区零智能协同系统&#xff1a;AI驱动的游戏效率倍增解决方案 【免费下载链接】ZenlessZoneZero-OneDragon 绝区零 一条龙 | 全自动 | 自动闪避 | 自动每日 | 自动空洞 | 支持手柄 项目地址: https://gitcode.com/gh_mirrors/ze/ZenlessZoneZero-OneDragon 在当代游戏生…...

保姆级教程:用Docker Compose一键部署带汉化和HTTPS的n8n,并配置反向代理(Nginx)

企业级n8n自动化平台全栈部署实战&#xff1a;从容器编排到安全加固 在数字化转型浪潮中&#xff0c;自动化工作流平台已成为企业降本增效的核心基础设施。n8n作为GitHub上增长最快的开源自动化工具之一&#xff0c;凭借其可视化编排能力和400节点生态&#xff0c;正在重塑企业…...

vLLM-v0.17.1参数详解:--disable-log-stats与--log-level日志调优

vLLM-v0.17.1参数详解&#xff1a;--disable-log-stats与--log-level日志调优 1. vLLM框架简介 vLLM是一个专为大型语言模型(LLM)设计的高性能推理和服务库&#xff0c;以其出色的吞吐量和易用性著称。这个项目最初由加州大学伯克利分校的天空计算实验室开发&#xff0c;现在…...

永磁同步电机全速域无位置传感器控制策略仿真研究:高频注入与改进滑膜控制方法应用

40、永磁同步电机全速域无位置传感器控制仿真&#xff08;仿真代码参考文献说明文档&#xff09; 主要内容&#xff1a; 采用高频注入改进滑膜控制方法&#xff0c;PMSM矢量控制仿真 [1]零低速域&#xff0c;采用无数字滤波器高频方波注入法&#xff0c;减少滤波的相位影响&…...

Dexter深度解析:如何用多Agent架构打造自主金融研究AI

一、为什么需要金融AI Agent&#xff1f; 1.1 传统金融研究的痛点 作为开发者&#xff0c;你是否遇到过这样的场景&#xff1a;需要分析一家上市公司的财务状况&#xff0c;却要花费数小时甚至数天时间&#xff1f; 传统金融研究面临三大挑战&#xff1a; 数据分散&#xff1a;…...

RGBLEDBlender:嵌入式RGB LED色彩混合与动态控制框架

1. RGBLEDBlender 库深度解析&#xff1a;面向嵌入式系统的 RGB 色彩混合与动态控制框架RGBLEDBlender 是一个轻量级、面向硬件的 RGB LED 色彩混合库&#xff0c;专为资源受限的微控制器平台&#xff08;尤其是 Arduino 生态&#xff09;设计。该库由 Erik Sikich 于 2016 年 …...

扩散模型实现:从环境搭建到图像生成的全流程指南

扩散模型实现&#xff1a;从环境搭建到图像生成的全流程指南 【免费下载链接】Diffusion-Models-pytorch Pytorch implementation of Diffusion Models (https://arxiv.org/pdf/2006.11239.pdf) 项目地址: https://gitcode.com/gh_mirrors/di/Diffusion-Models-pytorch …...

FPGA调试避坑指南:Vivado ILA采样深度和探针位宽怎么设?资源占用与调试效果的平衡术

FPGA调试实战&#xff1a;ILA采样深度与探针位宽的黄金平衡法则 当你在Artix-7芯片上调试一个包含32位计数器和多状态机的设计时&#xff0c;突然发现ILA吃掉了一半的Block RAM资源&#xff0c;而采样深度却只够捕获5个时钟周期的数据——这种场景是否似曾相识&#xff1f;本文…...