人工智能學習57-TF訓練

人工智能學習概述—快手視頻
人工智能學習57-TF訓練—快手視頻
人工智能學習58-TF訓練—快手視頻
人工智能學習59-TF預測—快手視頻

訓練示例代碼

#導入keras.utils 工具包 
import keras.utils 
#導入mnist數據集 
from keras.datasets import mnist 
#引入tensorflow 類庫 
import tensorflow.compat.v1 as tf 
#關閉tensorflow 版本2的功能,僅使用tensorflow版本1的功能 
tf.disable_v2_behavior() 
#引用numpy 處理矩陣操作 
import numpy as np 
#引用圖形處理類庫 
import matplotlib.pyplot as plt 
import matplotlib 
#引入操作系統類庫,方便處理文件與目錄 
import os 
#避免多庫依賴警告信息 
os.environ['KMP_DUPLICATE_LIB_OK'] = 'True' 
#設置tensorflow 訓練模型所在目錄 
model_path = '../log/model.ckpt' 
#設置神經網絡分類數量,0-9個數字需要10個分類 
num_classes = 10 
#從數據集mnist裝入訓練數據集和測試數據集,mnist提供load_data方法 
(x_train, y_train), (x_test, y_test) = mnist.load_data() 
#灰度圖編碼范圍0-255,將編碼歸一化,轉化為0-1之間數值 
x_train = x_train.astype('float32') / 255.0 
x_test = x_test.astype('float32') / 255.0 
#將訓練和測試標注數據轉化為張量(batch,num_classes) 
y_train = keras.utils.to_categorical(y_train, num_classes) 
y_test = keras.utils.to_categorical(y_test, num_classes) 
#定義輸入張量,分配地址 
x = tf.placeholder(tf.float32, [None, 784]) 
y = tf.placeholder(tf.float32, [None, 10]) 
#初始化第一層權重W矩陣 
w1 = tf.Variable(tf.random_normal([784, 128])) 
#初始化第一層偏置B向量 
b1 = tf.Variable(tf.zeros([128])) 
#定義第一層激活函數輸入值 X*W+B 
hc1 = tf.add(tf.matmul(x,w1),b1) 
#定義第一層輸出,調用激活函數sigmoid 
h1 = tf.sigmoid(hc1) 
#初始化第二層權重W矩陣 
w2 = tf.Variable(tf.random_normal([128, 10])) 
#初始化第二層偏置B向量 
b2 = tf.Variable(tf.zeros([10])) 
#使用激活函數softmax,預測第二層輸出 
pred = tf.nn.softmax(tf.matmul(h1, w2) + b2) 
#使用交叉熵定義代價函數 
cost = tf.reduce_mean(-tf.reduce_sum(y*tf.log(pred), reduction_indices=1)) 
#定義學習率 
learn_rate = 0.01 
#使用梯度下降法優化網絡 
optimizer = tf.train.GradientDescentOptimizer(learn_rate).minimize(cost) 
epoch_list = [] 
cost_list = [] train_epoch = 30 
batch_size = 100 
display_step = 1 
#定義神經網絡模型保存對象 
saver = tf.train.Saver() 
#觸發tensorflow初始化,為定義變量賦值 
init = tf.global_variables_initializer() 
#啟動tensorflow會話 
with tf.Session() as sess: if os.path.exists('../log/model.ckpt.meta'): saver.restore(sess, model_path) #如果存在網絡模型,在會話中裝入網絡模型 else: sess.run(init) #如果不存在網絡模型,會話執行初始化工作 #循環遍歷每次訓練 for epoch in range(train_epoch): #定義平均損失 avg_cost = 0. #計算總批次 total_batch = int(x_train.shape[0] / batch_size) #循環每批次樣本數據 for i in range(total_batch): #讀取每批次訓練樣本數據 batch_xs = x_train[i*batch_size: (i+1)*batch_size] #讀取每批次訓練標簽樣本數據 batch_ys = y_train[i*batch_size: (i+1)*batch_size] #轉化樣本數據格式,添加第一維度代表樣本數量 batch_xs = np.reshape(batch_xs, (100, -1)) #啟動tensorflow進行樣本數據訓練 _, c = sess.run([optimizer, cost], feed_dict={x: batch_xs, y: 
batch_ys}) #累計每批次的平均損失 avg_cost += c / total_batch #記錄平均損失 epoch_list.append(epoch+1) cost_list.append(avg_cost) #每隔display_step次訓練,輸出一次統計信息 if (epoch+1) % display_step == 0: print('Epochs: ','%04d' % (epoch+1), 'Costs ', 
'{:.9f}'.format(avg_cost)) print('Train Finished') #保存tensorflow訓練的模型 
save_dir = saver.save(sess, model_path) 
print('TensorFlow model save as file %s' % save_dir) 
#圖形顯示訓練結果 
matplotlib.rcParams['font.family'] = 'SimHei' 
plt.plot(epoch_list, cost_list, '.') 
plt.title('Train Model') 
plt.xlabel('Epoch') 
plt.ylabel('Cost') 
plt.show() 

在這里插入圖片描述
在這里插入圖片描述

測試示例代碼

#導入keras.utils 工具包 
import keras.utils 
#導入mnist數據集 
from keras.datasets import mnist 
#引入tensorflow 類庫 
import tensorflow.compat.v1 as tf 
#關閉tensorflow 版本2的功能,僅使用tensorflow版本1的功能 
tf.disable_v2_behavior() 
#引用圖形處理類庫 
import matplotlib.pyplot as plt 
#引用numpy處理矩陣操作 
import numpy as np 
#引入操作系統類庫,方便處理文件與目錄 
import os 
#避免多庫依賴警告信息 
os.environ['KMP_DUPLICATE_LIB_OK'] = 'True' 
#設置tensorflow 訓練模型所在目錄 
model_path = '../log/model.ckpt' 
#設置神經網絡分類數量,0-9個數字需要10個分類 
num_classes = 10 
#從數據集mnist裝入訓練數據集和測試數據集,mnist提供load_data方法 
(x_train, y_train), (x_test, y_test) = mnist.load_data() 
#灰度圖編碼范圍0-255,將編碼歸一化,轉化為0-1之間數值 
x_train = x_train.astype('float32') / 255.0 
x_test = x_test.astype('float32') / 255.0 
#將訓練和測試標注數據轉化為張量(batch,num_classes) 
y_train = keras.utils.to_categorical(y_train, num_classes) 
y_test = keras.utils.to_categorical(y_test, num_classes) 
#定義輸入張量,分配地址 
x = tf.placeholder(tf.float32, [None, 784]) 
y = tf.placeholder(tf.float32, [None, 10]) 
#初始化第一層權重W矩陣 
w1 = tf.Variable(tf.random_normal([784, 128])) 
#初始化第一層偏置B向量 
b1 = tf.Variable(tf.zeros([128])) 
#定義第一層激活函數輸入值 X*W+B 
hc1 = tf.add(tf.matmul(x,w1),b1) 
#定義第一層輸出,調用激活函數sigmoid 
h1 = tf.sigmoid(hc1) 
#初始化第二層權重W矩陣 
w2 = tf.Variable(tf.random_normal([128, 10])) 
#初始化第二層偏置B向量 
b2 = tf.Variable(tf.zeros([10])) 
#使用激活函數softmax,預測第二層輸出 
pred = tf.nn.softmax(tf.matmul(h1, w2) + b2) 
#測試樣本集數量 
test_num = x_test.shape[0] 
#定義獲取隨機整數函數,返回0- test_num 
def rand_int(): 
rand = np.random.RandomState(None) 
return rand.randint(low=0, high=test_num) 
#定義神經網絡模型保存對象 
saver = tf.train.Saver() 
n = rand_int() 
#啟動tensorflow 會話 
with tf.Session() as sess: 
#在會話中裝入網絡模型 
saver.restore(sess, model_path) 
#讀取測試樣本數據 
batch_xs = x_test[n: n+2] 
#讀取測試標簽樣本數據 
batch_ys = y_test[n: n+2] 
#轉化樣本數據格式,添加第一維度代表樣本數量 
batch_xs = np.reshape(batch_xs, (2, -1)) 
#定義模型預測輸出概率最大品類 
output = tf.argmax(pred, 1) 
#使用模型預算 
outputv, predv = sess.run([output, pred], feed_dict={x: batch_xs}) 
#圖形輸出 
plt.figure(figsize=(2, 3)) 
for i in range(batch_xs.ndim): 
plt.subplot(1, 2, i+1) 
plt.subplots_adjust(wspace=2) 
t = batch_xs[i].reshape(28, 28) 
plt.imshow(t, cmap='gray') 
if outputv[i] == batch_ys[i].argmax(): 
plt.title('%d,%d' 
% 
color='green') 
else: 
(outputv[i], 
batch_ys[i].argmax()), 
plt.title('%d,%d' % (outputv[i], batch_ys[i].argmax()), color='red') 
plt.xticks([]) 
plt.yticks([]) 
plt.show() 

在這里插入圖片描述

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

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

相關文章

MySQL(83)如何設置密碼復雜度策略?

在 MySQL 中,可以通過配置密碼策略來設置密碼的復雜度要求。MySQL 提供了一些參數和插件來幫助管理員強制實施密碼復雜度策略,確保數據庫用戶使用強密碼。下面將詳細介紹如何設置密碼復雜度策略,并結合代碼示例進行說明。 1. 使用 validate_…

如何使用postman做接口自動化測試?

🍅 點擊文末小卡片,免費獲取軟件測試全套資料,資料在手,漲薪更快 本文適合已經掌握 Postman 基本用法的讀者,即對接口相關概念有一定了解、已經會使用Postman 進行模擬請求等基本操作。 工作環境與版本: …

面試-操作系統

用戶態和內核態的區別 內核態:在內核態下,CPU可以執行所有的指令和訪問所有的硬件資源。 用戶態:在用戶態下,CPU只能執行部分指令集,無法直接訪問硬件資源。 內核態的底層操作主要包括:內存管理、進程管理…

【基礎算法】二分(二分查找 + 二分答案)

文章目錄 一、二分查找1. 【案例】在排序數組中查找元素的第一個和最后一個位置 ?(1) 二分查找的引入(2) 解題細節(important)(3) 代碼示例(4) 【模板】二分查找(5) STL 中的二分查找 2. 牛可樂和封印魔法 ??(1) 解題思路(2) 代碼實現 3. A-B 數對 ?…

多協議物聯網關的方案測試-基于米爾全志T536開發板

本文將介紹基于米爾電子MYD-LT536開發板(米爾基于全志T536開發板)的多協議物聯網關方案的開發測試。 摘自優秀創作者-ALSET 米爾基于全志T536開發板 為了充分的應用該開發板,結合T536處理器的特點,這里進一步的進行軟件開發&…

echarts的還原,下載圖片失效(空白圖片,還原白屏)

echarts的toolbox.feature. restore 和toolbox.feature. saveAsImage 失效 也沒有任何報錯, 只需要修改: // chart.setOption(op); chart.setOption(op,true);

56-Oracle SQL Tuning Advisor(STA)

各位小伙伴,一般都用哪些優化工具,Oracle SQL Tuning Advisor (STA)用的多嗎,Profile就是它的其中1個產物,下一期再弄Profile,STA 的核心功能是自動化診斷高負載SQL的性能瓶頸?(如全表掃描、缺失索引&…

修改element-plus的主題色css變量

提示:本文僅是記錄我修改element-plus等組件庫的css變量, 具體【實現主題色切換看這篇】即可 文章目錄 1.文件劃分2.src/style/index.scss入口文件3.src/style/theme.scss主題色切換維護4.src/style/_color-utils.scss動態生成element-plus的scss變量5.…

Vibe Coding - 進階 Cursor Rules

文章目錄 為什么要配置 .cursorrules使用 .cursorrules 的五大優勢 如何創建與應用 .cursorrules? 基礎步驟🛠 創建方式: 高質量 .cursorrules 文件,應包含以下內容配置示例Java 項目TypeScript React 項目總結 cursorrules 推薦網站 為什么…

騰訊云自動化助手(TAT)技術評估報告

摘要 騰訊云自動化助手(TAT)作為云服務器(CVM)與輕量應用服務器(Lighthouse)的原生運維工具,通過無密碼批量命令執行(Shell/Python/PowerShell)、交互式會話管理及公共命…

【simulink】IEEE5節點系統潮流仿真模型(2機5節點全功能基礎模型)

主要內容 該模型為simulink仿真模型,主要實現的內容如下: 模型是基于 Simulink 搭建的電力系統潮流計算仿真模型,圍繞2 臺發電機、5 個節點的拓撲結構構建,用于電力系統穩態分析,是電力系統研究、教學及工程實踐中…

責任鏈模式詳解

責任鏈模式 場景 顧名思義,責任鏈模式(Chain of Responsibility Pattern)為請求創建了一個接收者對象的鏈。這種模式給予請求的類型,對請求的發送者和接收者進行解耦。這種類型的設計模式屬于行為型模式。 在這種模式中&#x…

Taro 跨端應用性能優化全攻略:從原理到實踐

引言:為什么需要性能優化? 在當今移動互聯網時代,用戶體驗已經成為決定產品成敗的關鍵因素。根據 Google 的研究,頁面加載時間每增加 1 秒,移動端轉化率就會下降 20%。對于使用 Taro 開發的跨端應用來說,性…

Git集成Jenkins通過Pipeline方式實現一鍵部署

Docker方式部署Jenkins 部署自定義Docker網絡 部署Docker網絡的作用: 隔離性便于同一網絡內容器相互通信 # 創建名為jenkins的docker網絡 docker network create --subnet 172.18.0.0/16 --gateway 172.18.0.1 jenkins# 查看docker網絡列表 docker network ls# …

磐基PaaS平臺MongoDB組件SSPL許可證風險與合規性分析(下)

#作者:任少近 3.7.條款六:非源代碼形式分發 官方原文如下: 原文關鍵部分:“You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License.” 解讀:“您不得…

桌面小屏幕實戰課程:DesktopScreen 2 第一個工程

飛書文檔http://https://x509p6c8to.feishu.cn/docx/doxcnkGhtbxcv8ge5wKFkunsgmm 一、創建工程 cd ~/esp cp -r esp-idf/examples/get-started/hello_world . cd ~/esp/hello_world//設置目標板卡相關 idf.py set-target esp32//可配置工程屬性 idf.py menuconfig 工程源碼…

華為云Flexus+DeepSeek征文|體驗華為云ModelArts快速搭建Dify-LLM應用開發平臺并搭建查詢數據庫的大模型工作流

華為云FlexusDeepSeek征文|體驗華為云ModelArts快速搭建Dify-LLM應用開發平臺并搭建查詢數據庫的大模型工作流 什么是華為云ModelArts 華為云ModelArts ModelArts是華為云提供的全流程AI開發平臺,覆蓋從數據準備到模型部署的全生命周期管理&#xff0c…

【深度學習】TensorFlow全面指南:從核心概念到工業級應用

TensorFlow全面指南:從核心概念到工業級應用 一、TensorFlow:人工智能時代的計算引擎1.1 核心特性與優勢 二、安裝與環境配置2.1 版本選擇建議2.2 GPU支持關鍵組件 三、TensorFlow核心概念解析3.1 數據流圖(Data Flow Graph)3.2 張量(Tensor)&#xff1a…

在VTK中捕捉體繪制圖像進階(同步操作)

0. 概要 這段代碼實現了一個VTK(Visualization Toolkit)應用程序,主要功能是: 讀取DICOM醫學圖像序列并進行體繪制(Volume Rendering)創建一個主窗口顯示3D體繪制結果創建一個副窗口顯示主窗口的2D截圖將副窗口中的交互操作(如旋轉、縮放等)轉發到主窗口,而不影響副窗…

使用NPOI庫導出多個Excel并壓縮zip包

使用NPOI庫導出Excel文件可以按照以下步驟進行: 添加NPOI庫的引用:在項目中添加對NPOI庫的引用。 創建一個新的Excel文件對象:使用NPOI中的HSSFWorkbook(對應.xls格式)或XSSFWorkbook(對應.xlsx格式&#…