從零開始玩轉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.pswp.cn/web/70399.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/70399.shtml
英文地址,請注明出處:http://en.pswp.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 關鍵字是一種類型修飾符,用它聲明的類型變量表示可以被某些編譯器未知的因素更改,比如:操作系統、硬件或者其它線程等。遇到這個關鍵字聲明的變量,編譯器對訪問該變量的代碼就不再進行優化,從而可以提供對特殊…