用Tensorflow進行線性回歸和邏輯回歸(八)

新的TensorFlow概念

創建簡單的機器學習系統需要學習一些新的概念。

優化器

上兩節介紹的元素已經提示了TensorFlow是如何完成機器學習的。你已學習了如何用張量操作來定義損失函數。缺少的是你不知道如何用TensorFlow進行梯度下降。盡管可以用TensorFlow元素直接用 Python定義優化算法例如梯度下降。tf.train模塊提供了很多優化算法。這些算法可以作為TensorFlow 計算圖的節點被添加。

我該使用哪個optimizer?

tf.train里有很多可能的optimizer。包括 tf.train.GradientDescentOptimizer, tf.train.MomentumOptimizer, tf.train.AdagradOptimizer, tf.train.AdamOptimizer,等。這些 optimizers有什么區別呢?幾乎所有這些優化器都基于梯度下降的思想。我們前面講的最簡單的梯度下降規則是:

W = W ? α?W

數學上,這種更新規則是很基礎的。研究者發現很多快速優化算法不需要過多的額外計算。 tf.train.AdamOptimizer是黙認相對穩健的。(很多優化器對超參數的選擇很敏感。初學者最好不要使用復雜的方法,除非掌握了不同優化算法的行為)

Summaries and file writers for TensorBoard

可視化的理解張量程序很有用。TensorFlow團隊提供了TensorBoard,可以用以這個目 的。 TensorBoard啟動網絡服務器(黙認為localhost) 來展示TensorFlow 程序。但是程序員要手工的寫日志語句。 tf.train.FileWriter() 指明TensorBoard程序的日志目錄。tf.summary 寫入TensorFlow 匯總到日志目錄。這一章我們只使用 tf.summary.scalar,它匯部標量,跟蹤損失函數的值。 tf.summary.merge_all() 是有用的日志助手合并多個匯總到一個匯總。

運行下面的命令在存放源代碼文件的目錄下創建名為“logs”的目錄。

$ mkdir logs

運行TensorBoard并傳遞“logs”目錄的位置作為參數:

#$ tensorboard --logdir=./logs

$ tensorboard --logdir=”logs”

打開瀏覽器并導航到http://localhost:6006, 這是TensorBoard的黙認URL。

您可以在 Eager Execution 中使用?tf.summary?記錄變量摘要。例如,要每 100 個訓練步驟記錄一次?loss?的摘要,請運行以下代碼:

#List3-22

logdir = "./log/"
writer = tf.summary.create_file_writer(logdir)
steps = 1000
with writer.as_default(): ?# or call writer.set_as_default() before the loop.
? for i in range(steps):
? ? step = i + 1
? ? # Calculate loss with your real train function.
? ? loss = 1 - 0.001 * step
? ? if step % 100 == 0:
? ? ? tf.summary.scalar('loss', loss, step=step)

#List3-23_using_tensorboard.py

import os

import io

import time

import numpy as np

import matplotlib.pyplot as plt

import tensorflow as tf

# Create a visualizer object

#summary_writer = tf.summary.FileWriter('tensorboard', tf.get_default_graph())

# Create tensorboard folder if not exists

if not os.path.exists('tensorboard'):

os.makedirs('tensorboard')

logdir = "./tensorboard"

writer = tf.summary.create_file_writer(logdir)

steps = 1000

with writer.as_default():

??? for i in range(steps):

????? step = i + 1

????? loss = 1 - 0.001 * step

????? if step % 100 == 0:

??????????????? tf.summary.scalar('loss', loss, step=step)

# Wait a few seconds for user to run tensorboard commands

time.sleep(5)

batch_size = 50

generations = 100

# Create sample input data

x_data = np.arange(1000)/10.

true_slope = 2.

y_data = x_data * true_slope + np.random.normal(loc=0.0, scale=25, size=1000)

# Split into train/test

train_ix = np.random.choice(len(x_data), size=int(len(x_data)*0.9), replace=False)

test_ix = np.setdiff1d(np.arange(1000), train_ix)

x_data_train, y_data_train = x_data[train_ix], y_data[train_ix]

x_data_test, y_data_test = x_data[test_ix], y_data[test_ix]

# Declare placeholders

#x_graph_input = tf.placeholder(tf.float32, [None])

#y_graph_input = tf.placeholder(tf.float32, [None])

# Declare model variables

m = tf.Variable(tf.random.normal([1], dtype=tf.float32), name='Slope')

# Declare model

output = tf.multiply(m, x_data_train, name='Batch_Multiplication')

# Declare loss function (L1)

residuals = output - y_data_train

l1_loss = tf.reduce_mean(tf.abs(residuals), name="L1_Loss")

# Declare optimization function

#my_optim = tf.train.GradientDescentOptimizer(0.01)

#train_step = my_optim.minimize(l1_loss)

# Visualize a scalar

with tf.name_scope('Slope_Estimate'):

tf.summary.scalar('Slope_Estimate', tf.squeeze(m))

我們從命令行運行腳本?01_using_tensorboard.py?:

$ python3 List3-23_using_tensorboard.py

我們然后啟動Tensorboard程序:

$ tensorboard --logdir="tensorboard"

然后我們導航瀏覽器到:

http://127.0.0.0:6006

我們可以指明不同的端口號?--port 6007? (運行于端號 6007)。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/86234.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/86234.shtml
英文地址,請注明出處:http://en.pswp.cn/web/86234.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

基于python代碼的通過爬蟲方式實現TK下載視頻(2025年6月)

Tk的視頻頁面通常需要登錄才能獲取完整數據,但通過構造匿名游客的請求,我們可以繞過登錄限制,提取視頻的元信息(如標題、ID和播放地址)。核心思路如下: 構造匿名Cookie:通過模擬瀏覽器的請求,獲取Tk服務器分配的游客Cookie。解析網頁:利用BeautifulSoup解析HTML,定位…

火山 RTC 引擎14 設置CB

一、火山RTC引擎集成時,設置CB 1、統一設置 void NRTCEngine::SetByteRtcCBS() {UserPublishStreamCallback callback = [this](const std::string& roomId, const std::string& uid, bytertc::MediaStreamType type) {this->OnSigUserPublishStream(roomId, uid, …

BUUCTF在線評測-練習場-WebCTF習題[極客大挑戰 2019]PHP1-flag獲取、解析

解題思路 打開靶場,提示備份 常見的備份后綴名有.bak,.backup,.zip等等 這里肯定是要掃目錄了,不知道是我的問題還是目錄掃描工具的問題還是BUUCTF的問題,每次要掃目錄能掃出一堆東西來,不管你用什么后綴…

對話云蝠智能:大模型如何讓企業呼叫系統從 “成本中心” 變身 “價值樞紐”?

在人工智能重塑企業服務的浪潮中,云蝠智能(南京星蝠科技有限公司旗下品牌)以深厚的技術積累和行業實踐,逐步成長為國內智能外呼領域的標桿企業。其發展路徑揭示了技術自主創新與場景深度結合的必然性。 一、技術架構:全…

Python-文件管理

1. Open方法 Python 中的文件操作主要通過內置的 open() 函數來完成,該函數用于打開文件,并返回一個文件對象。通過文件對象,可以進行各種文件操作,如讀取、寫入、關閉等。 使用 open() 方法一定要保證關閉文件對象,即…

高速DIC技術之推進劑樣品在霍普金森桿的高速沖擊下的變形監測與不同材質頭盔在不同沖擊位置下的變形測試-VIC-3D HS非接觸全場動態應變測量系統

工程領域對材料與結構在極端動態載荷下復雜變形行為的測量有強烈的需求,且這種測量必須是精確、全域、非接觸式的,高速DIC技術應運而生并不斷得到發展。 常見動態應用包括(但不限于):碰撞測試、爆炸試驗、沖擊試驗、跌…

微算法科技融合Grover算法與統一哈希函數的混合經典-量子算法技術,可在多領域高效提升文本處理效率

隨著數據規模的不斷擴大,尤其是在大數據和人工智能驅動的應用中,這些經典算法的線性復雜度逐漸成為瓶頸。面對數十億級別的文本數據,線性時間的算法仍然難以滿足實時性的要求。此外,經典算法在處理無序或隨機文本時,性…

Spring Boot Security Core

依賴配置&#xff08;Maven&#xff09; xml 復制 下載 運行 <!-- Spring Security Core --> <dependency><groupId>org.springframework.security</groupId><artifactId>spring-security-core</artifactId><version>6.2.5<…

【趙渝強老師】OceanBase云平臺OCP

OCP的全稱是OceanBase Cloud Platform&#xff0c;即&#xff1a;OceanBase云平臺。OCP面向有OceanBase管理需求的中小型用戶&#xff0c;提供了基礎的主機管理、OceanBase 集群和租戶運維等能力。在OCP中主要包含兩個組成部分&#xff0c;它們分別是&#xff1a;MetaDB和OCP S…

快速定位Swagger文檔請求地址‘/v2/api-docs‘,發生未知異常.NullPointerException:精準定位+根治方案

問題現場&#xff1a;訪問 http://localhost:8080/v2/api-docs 時日志報錯&#xff1a; 請求地址/v2/api-docs,發生未知異常. java.lang.NullPointerException: nullat springfox.documentation.swagger2.mappers.RequestParameterMapper.bodyParameter(RequestParameterMappe…

圖像處理解決方案

證件照小工具微信小程序系統是基于微擎開源生態開發的多功能圖像處理平臺&#xff0c;專為用戶提供便捷的證件照制作及圖片編輯服務。微擎系統作為一款基于 PHP 開發的開源應用生態系統&#xff0c;具備快速搭建多端應用的能力&#xff0c;其模塊化架構與跨平臺兼容性為證件照工…

Qt聯合Halcon開發四:【詳細圖解】海康相機配置并鏈接測試

1. 下載與安裝海康 MVS SDK 首先&#xff0c;訪問海康機器人官網的下載中心&#xff0c;選擇 “Machine Vision” 模塊下的 MVS 軟件包。 1. 打開瀏覽器&#xff0c;進入&#xff1a;https://www.hikrobotics.com/cn/ 2. 下載最新版的 MVS 安裝包&#xff08;通常以 MVS_x.x.…

vue3打包后,圖片丟失

前言&#xff1a; 在 webpack 中使用 require() 來引入靜態圖片&#xff0c;但在 vite 中就不行。 代碼實現 <template><div><img :src"empty"></div> </template><script setup> // 引入本地圖片(注意改成您的路徑) import em…

MongoDB 8.0.10 windows11安裝記錄

最近在學習node&#xff0c;看的教程用的是MongoDB 5.0的&#xff0c;安裝上和新版的有一些區別&#xff0c;都安裝完后不能直接在C:\Program Files\MongoDB\Server\8.0\bin 這個目錄使用mongo 啟動&#xff0c;因為都沒那文件。 摸索了下弄好了。 下載社區版最新安裝包&#…

信息系統項目管理師023:云計算(2信息技術發展,網絡安全面試問題

2.關鍵技術 云計算的關鍵技術主要涉及虛擬化技術、云存儲技術、多租戶和訪問控制管理、云安全技術等。 1&#xff09;虛擬化技術 虛擬化是一個廣義術語&#xff0c;在計算機領域通常是指計算元件在虛擬的基礎上而不是真實的基礎上運行。虛擬化技術可以擴大硬件的容量&#x…

django csrf的局限性

Django的CSRF保護機制雖被廣泛應用&#xff0c;但在實際場景中存在以下關鍵局限性&#xff0c;需開發者特別注意&#xff1a; 一、內容類型限制&#xff08;Content-Type約束&#xff09; 僅保護特定響應類型 CSRF中間件默認只對text/html和application/xmlxhtml響應生效&#…

如何將緩存存到客戶端瀏覽器上呢

要將緩存存到客戶端瀏覽器&#xff0c;關鍵是讓 瀏覽器接收到合適的 HTTP 緩存控制響應頭。這通常通過 add_header 添加控制頭來實現。 ? 一般做法&#xff08;強緩存 協商緩存&#xff09;&#xff1a; &#x1f539; 1. 強緩存&#xff1a;使用 Cache-Control 和 Expires …

微軟ASR與開源模型分析

一、微軟ASR核心能力 1. 支持場景 場景功能實時語音轉文本低延遲流式識別&#xff08;會議字幕/直播轉錄&#xff09;音頻文件轉文本支持多種格式&#xff08;WAV/MP3等&#xff09;&#xff0c;批量處理長音頻定制化模型針對特定行業術語&#xff08;醫療/金融&#xff09;訓…

2025下半年軟考中級科目難度解析與選科指南

2025年下半年軟考中級科目共有6科&#xff0c;包括系統集成項目管理工程師、信息系統管理工程師、信息安全工程師、網絡工程師、軟件設計師以及多媒體應用設計師。面對眾多科目&#xff0c;考生應如何做出選擇&#xff1f; 一、考試時間安排 在開始備考之前&#xff0c;了解考…

深度剖析:PPP PRIVATE NETWORK UDP/IP AGGLIGATOR

&#x1f680; 深度剖析&#xff1a;PPP PRIVATE NETWORK UDP/IP AGGLIGATOR &#x1f3d7;? 一、架構概述 這是一個高性能網絡聚合系統&#xff0c;核心功能是通過多路TCP連接隧道化UDP流量&#xff0c;提升網絡傳輸的可靠性和性能。系統采用C編寫&#xff0c;基于Boost.Asi…