从零开始玩转TensorFlow:小明的机器学习故事 2

你好,TensorFlow!——从零开始的第一个机器学习程序

1. 为什么要写这个“Hello, TensorFlow!”?

无论学习什么新语言或新框架,“Hello World!”示例都能帮助我们快速确认开发环境是否就绪,并掌握最基本的使用方式。对于初学者来说,这种“可执行的最小示例”既能降低上手门槛,又能带来满满的成就感。在这里,我们就用 TensorFlow 2.x 的即时执行模式,输出“Hello, TensorFlow!”。

2. TensorFlow 2.x 的核心思路:Eager Execution(即时执行)

TensorFlow 2.x 中,默认启用了“Eager Execution”,这意味着我们写下的每条运算指令(如创建张量、执行运算)都会即时获得结果,而不必先构建一个完整的计算图然后再启动会话。

  • 更贴近 Python 语言习惯:像在普通 Python 中执行 a + b 一样,TensorFlow 也会立即返回结果。
  • 简化开发流程:不需要 Session.run() 或者 with tf.Session() as sess: 这类模式。

下面用一张简化示意图来对比 “Eager Execution” 与 1.x 中的“图+会话”模式的区别:

TensorFlow 1.x (Graph + Session)
--------------------------------
编写代码定义计算图 --> 建立Session --> run操作 --> 返回结果TensorFlow 2.x (Eager Execution)
--------------------------------
编写代码定义运算 --> 立即返回结果

TensorFlow 2.x 中,我们可以专注在“如何使用张量进行计算”,而不需要先构建并保存一张大图。

3. 第一个“机器学习”项目——打印“Hello, TensorFlow!”

3.1 场景介绍

小明准备开发一个用 TensorFlow 解决机器学习问题的项目,但他决定从最简单的“Hello, TensorFlow!”开始,以此来熟悉新环境,并且能快速给朋友演示成果。

3.2 原理
  1. 张量(Tensor):在 TensorFlow 中,所有数据都被包装成张量,包括文本。
  2. 即时执行(Eager Execution):在 2.x 里,我们定义一个张量,就可以立刻对它做各种操作,并马上查看结果。

我们并不需要显式地创建“计算图”或“会话”对象,一切都顺畅自然地执行。

3.3 实际代码

下面是一段在 TensorFlow 2.x 环境下,可以直接运行的代码示例:

import tensorflow as tf# 定义一个字符串常量张量
hello_constant = tf.constant('Hello, TensorFlow!')# 在 Eager Execution 模式下,可以使用 .numpy() 将张量转换为 numpy 数组,并解码为字符串
print(hello_constant.numpy().decode())

代码解释:

  • tf.constant():创建一个常量张量,这里存储了字符串 "Hello, TensorFlow!"
  • hello_constant.numpy():从张量中取出实际数据,以 numpy 数组形式返回。
  • .decode():将字节字符串(如 b'Hello, TensorFlow!')转换为普通的 Python 字符串,以便正常打印。
3.4 操作步骤
  1. 安装/准备环境
    • 保证你在使用的 Python 环境里安装了 TensorFlow 2.x 版本:
      pip install --upgrade tensorflow
      
  2. 编写脚本
    • 将上面的代码保存为 hello_tf.py
  3. 执行脚本
    • 打开终端或命令提示符,运行:
      python hello_tf.py
      
    • 如果一切正常,你会在输出中看到:
      Hello, TensorFlow!
      

4. 流程图帮助理解

为了帮助零基础读者更好地理解这个“即时执行”流程,我们用以下简易流程图展示:

┌───────────────────────────────────┐
│ 1. 定义一个常量张量 (tf.constant) │
└───────────────────────────────────┘│▼
┌───────────────────────────────────┐
│ 2. 直接调用 numpy() 方法          │
│    在 Eager 模式下立即得到数据    │
└───────────────────────────────────┘│▼
┌───────────────────────────────────┐
│ 3. 字节字符串 decode() 转换为可打印的普通字符串 │
└───────────────────────────────────┘│▼
┌───────────────────────────────────┐
│ 4. 打印结果:Hello, TensorFlow!   │
└───────────────────────────────────┘

在这里,你不需要先构建一个完整的图再去启动会话,而是像普通 Python 程序那样,一条条执行并立即获得结果。

5. 可能会遇到的问题

  1. 没有安装 TensorFlow 2.x
    • 确保使用 pip install --upgrade tensorflow,升级到最新的 2.x 版本。
  2. 出现兼容性或版本冲突
    • 如果有旧的 TensorFlow 1.x 项目残留,可能出现 ImportError 或者其他冲突。
    • 可以创建一个新虚拟环境(virtualenv/conda)来确保干净的环境安装 TensorFlow 2.x。

6. 成果展示与成就感

如果你在控制台上看到 Hello, TensorFlow!,就说明你已经完成了:

  • TensorFlow 2.x 安装验证
  • Eager Execution 的原理体验
  • 基本的代码运行

这虽然只是一个简单的“Hello, TensorFlow!”示例,但已经让你初步掌握了 TensorFlow 2.x 中的即时执行思路。下一步,你可以尝试更复杂的例子,比如基本的数学运算或线性回归,让这个新“工具”给你带来更多惊喜。


总结与分析

  1. 学习重点
    • Eager Execution(即时执行):TensorFlow 2.x 的默认执行方式,真正做到了“所写即所得”。
    • 张量(Tensor):用来存储和表示数据,无论是数字、字符串,还是图像,都离不开张量的概念。
  2. 为什么推荐这样做
    • 更易理解:不再需要 Session、Graph 这类对初学者稍显抽象的概念;
    • 更接近 Python 思维:每行代码都能立即看到结果,有助于快速迭代和调试;
    • 生态更新:TensorFlow 官方和多数教程如今都围绕 2.x 展开,社区支持丰富。

通过这个示例,你已经迈出了 TensorFlow 2.x 之旅的第一步。虽然它只是输出了一行字符串,但你已掌握了“即时执行”环境的核心理念,相信在往后的模型训练和数据处理过程中,你会更加得心应手!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/70399.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Java八股文】10-数据结构与算法面试篇

【Java八股文】10-数据结构与算法面试篇 数据结构与算法面试题数据结构红黑树说一下跳表说一下?LRU是什么?如何实现?布隆过滤器怎么设计?时间复杂度? 排序算法排序算法及空间复杂度 数据结构与算法面试题 数据结构 红…

Docker换源加速(更换镜像源)详细教程(2025.2最新可用镜像,全网最详细)

文章目录 前言可用镜像源汇总换源方法1-临时换源换源方法2-永久换源(推荐)常见问题及对应解决方案1.换源后,可以成功pull,但是search会出错 补充1.如何测试镜像源是否可用2.Docker内的Linux换源教程 换源速通版(可以直…

华为云deepseek大模型平台:deepseek满血版

华为云硅基流动使用Chatbox接入DeepSeek-R1满血版671B 1、注册: 华为云deepseek大模型平台注册:https://cloud.siliconflow.cn/i/aDmz6aVN 说明:填写邀请码的话邀请和被邀请的账号都会获得2000 万 Tokens;2个帐号间不会与其他关联…

抓包工具是什么?

抓包工具是一种用于捕获和分析网络数据包的软件或硬件设备。它可以帮助用户监控网络通信过程,查看网络中传输的数据内容、协议类型、源地址、目的地址等信息。以下是关于抓包工具的一些详细解释: 1. 主要功能 捕获数据包:抓包工具能够实时捕…

51c大模型~合集71

我自己的原文哦~ https://blog.51cto.com/whaosoft/12260659 #大模型推理加速技术的学习路线 EfficientQAT 可以在 41 小时内在单个 A100-80GB GPU 上完成对 2-bit Llama-2-70B 模型的量化感知训练。与全精度模型相比,精度仅下降了不到 3%(69.48 v…

OpenBMC:BmcWeb实例化App

BmcWeb是OpenBMC的一个核心模块,对外负责响应Redfish请求,并且由于OpenBMC的Web使用的Redfish api,所以BmcWeb也是Web的后台。 1.main函数 //src\webserver_main.cpp #include "webserver_run.hpp"int main(int /*argc*/, char**…

利用AI优化可再生能源管理:Python让绿色能源更高效

利用AI优化可再生能源管理:Python让绿色能源更高效 引言 在全球气候变化和能源危机的背景下,可再生能源的利用变得尤为重要。然而,可再生能源的管理和优化面临诸多挑战,如能源生产的不稳定性和能源需求的波动性。幸运的是&#…

改BUG:Mock测试的时候,when失效

问题再现: 这里我写了一测试用户注册接口的测试类,并通过when模拟下层的服务,但实际上when并没有奏效,还是走了真实的service层的逻辑。 package cn.ac.evo.review.test;import cn.ac.evo.review.user.UserMainApplication; imp…

单片机 code RO-data RW-data ZI-data以及OTA学习

带着问题去学习:这些数据是什么?分别放在哪里, 是什么:我个人的理解 code 和RO-data 分别是代码和只读数据,RW-data以及ZI-data分别是读写数据和初始化数据。 codeRO-data的大小正好是所占用ROM的大小,RO…

什么是LoRA微调

LoRA是大模型微调方法的一种,它的特点是只在模型的 部分权重(如 QKV 矩阵) 上 添加可训练参数 通过 低秩矩阵(AB) 来优化参数更新 优点: 极大降低显存消耗(deepseek 7B 只需 10GB) 适…

EasyRTC低延迟通信与智能处理:论嵌入式WebRTC与AI大模型的技术融合

在当今数字化时代,实时通信的需求日益增长,视频通话作为一种高效、直观的沟通方式,广泛应用于各个领域。WebRTC技术的出现,为实现浏览器之间的实时音视频通信提供了便捷的解决方案。而基于WebRTC技术的EasyRTC视频通话SDK&#xf…

10、k8s对外服务之ingress

service和ingress的作用 service的作用 NodePort:会在每个节点开放一个端口,端口号30000-32767。 也是只能用于内网访问,四层转发。实现负载均衡。不能基于域名进行访问。 clusterip:service的默认类型,只能在集群…

Java数据结构---栈

目录 一、栈的概念 二、栈的基本方法 三、栈的模拟实现 四、栈的练习 1、括号匹配 2、出栈入栈次序匹配 一、栈的概念 栈是一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底…

从CNN到Transformer:遥感影像目标检测的未来趋势

文章目录 前言专题一、深度卷积网络知识专题二、PyTorch应用与实践(遥感图像场景分类)专题三、卷积神经网络实践与遥感影像目标检测专题四、卷积神经网络的遥感影像目标检测任务案例【FasterRCNN】专题五、Transformer与遥感影像目标检测专题六、Transfo…

php-fpm

摘要 php-fpm(fastcgi process manager)是PHP 的FastCGI管理器,管理PHP的FastCGI进程,提升PHP应用的性能和稳定性 php-fpm是一个高性能的php FastCGI管理器,提供了更好的php进程管理方式,可以有效的控制内存和进程,支…

Python strip() 方法详解:用途、应用场景及示例解析(中英双语)

Python strip() 方法详解:用途、应用场景及示例解析 在 Python 处理字符串时,经常会遇到字符串前后存在多余的空格或特殊字符的问题。strip() 方法就是 Python 提供的一个强大工具,专门用于去除字符串两端的指定字符。本文将详细介绍 strip(…

open webui 部署 以及解决,首屏加载缓慢,nginx反向代理访问404,WebSocket后端服务器链接失败等问题

项目地址:GitHub - open-webui/open-webui: User-friendly AI Interface (Supports Ollama, OpenAI API, ...) 选择了docker部署 如果 Ollama 在您的计算机上,请使用以下命令 docker run -d -p 3000:8080 --add-hosthost.docker.internal:host-gatewa…

docker安装ros2 并在windows中显示docker内ubuntu系统窗口并且vscode编程

这里包括docker desktop安装ros2 humble hawkshill , 安装xserver(用来在windows中显示ubuntu中窗口), vscode安装插件连接docker并配置python的一系列方法 1.安装xserver 为了能方便的在windows中显示ubuntu内的窗口,比如rqt窗口 参考文章:https://www.cnblogs.com/larva-zhh…

VMware安装Centos 9虚拟机+设置共享文件夹+远程登录

一、安装背景 工作需要安装一台CentOS-Stream-9的机器环境,所以一开始的安装准备工作有: vmware版本:VMware Workstation 16 镜像版本:CentOS-Stream-9-latest-x86_64-dvd1.iso (kernel-5.14.0) …

C/C++ 中 volatile 关键字详解

volatile 关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素更改,比如:操作系统、硬件或者其它线程等。遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进行优化,从而可以提供对特殊…