深入理解TensorFlow架構設計與實現原理 3 :基礎概念
1、程式設計正規化:資料流圖
宣告式程式設計與指令式程式設計的對比討論
資料流圖: tensorflow 1.2.0
2、資料載體:張量
張量:Tensor
稀疏張量:SparseTensor類,以鍵值對的形式表示高維稀疏資料,它包含indices、values和dense_shape這3個屬性。
3、模型載體:操作
計算節點:Operation類定義在tensorflow/python/framework/ops.py
儲存節點:Variable類定義在tensorflow/python/ops/variables.py
資料節點:tf.placeholder操作
4、執行環境:會話
普通會話:Session類定義在tensorflow/python/client/session.py
互動式會話:InteractiveSession,使用者可以不借助with上下文語句塊,直接使用Tensor.eval和Operation.run方法求解張量、執行操作
5、訓練工具:優化器
損失函式和優化演算法:
優化器概述:
6、一元線性迴歸模型的最佳實踐
Y = W^T * X + b
可分為8個步驟:
(1)定義超引數:
(2)輸入資料:
(3)構建模型:
(4)定義損失函式:
(5)建立優化器:
(6)定義單步訓練操作:
(7)建立會話:
(8)迭代訓練:
import tensorflow as tf import matplotlib.pyplot as plt # 1 超引數 learning_rate = 0.01 max_train_steps = 1000 log_step = 10 # 2 輸入資料 train_X = np.array([[3.3],[4.4],[5.5],[6.71],[6.93],[4.168],[9.779], [6.182],[7.59],[2.167],[7.042],[10.791],[5.313], [7.997],[5.654],[9.27],[3.1]], dtype=np.float32) train_Y = np.array([[1.7],[2.76],[2.09],[3.19],[1.694],[1.573],[3.366], [2.596],[2.53],[1.221],[2.827],[3.465],[1.65],[2.904], [2.42],[2.94],[1.3]], dtype=np.float32) total_samples = train_X.shape[0] # 3 構建模型 X = tf.placeholder(tf.float32, [None, 1]) W = tf.Variable(tf.random_normal([1,1]), name="weight") b = tf.Variable(tf.zeros([1]), name="bias") Y = tf.matmul(X, W) + b # 4 定義損失函式 Y_ = tf.placeholder(tf.float32, [None, 1]) loss = tf.reduce_sum(tf.pow(Y-Y_, 2))/(total_samples) # 5 建立優化器 optimizer = tf.train.GradientDescentOptimizer(learning_rate) # 6 定義單步訓練操作 train_op = optimizer.minimize(loss) # 7 建立會話 with tf.Session() as sess: sess.run(tf.global_variables_initializer()) # 8 迭代訓練 print("Start training:") for step in xrange(max_train_steps): sess.run(train_op, feed_dict={X: train_X, Y_: train_Y}) # 每隔 log_step 步列印一次日誌 if step % log_step == 0: c = sess.run(loss, feed_dict={X: train_X, Y_: train_Y}) print("Step:%d, loss==%.4f, W==%.4f, b==%.4f" % (step, c, sess.run(W), sess.run(b))) # 輸出指標 final_loss = sess.run(loss, feed_dict={X: train_X, Y_: train_Y}) # 訓練完畢的模型引數 weight, bias = sess.run([W, b]) print("Step:%d, loss==%.4f, W==%.4f, b==%.4f" % (max_train_steps, final_loss, sess.run(W), sess.run(b))) print("Linear Regression Model: Y==%.4f*X+%.4f" % (weight, bias)) # 9 視覺化 #初始化後端 %matplotlib plt.plot(train_X, train_Y, 'ro', label='Training data') plt.plot(train_X, weight*train_X + bias, label='Fitted line') plt.legend() plt.show()
Step:1000, loss==0.1545, W==0.2621, b==0.7246 Linear Regression Model: Y==0.2621*X+0.7246
相關推薦
深入理解TensorFlow架構設計與實現原理 3 :基礎概念
1、程式設計正規化:資料流圖 宣告式程式設計與指令式程式設計的對比討論 資料流圖: tensorflow 1.2.02、資料載體:張量 張量:Tensor 稀疏張量:SparseTensor類,以鍵值對的形式表示高維稀疏資料,它包含indices、values
jQuery技術內幕:深入解析jQuery架構設計與實現原理
源碼 att root 功能 技術內幕 瀏覽器 sel 緩存 callbacks jQuery源碼(jquery-1.7.1.js)的總體結構:(function( window, undefined ) {// 構造jQuery對象 var jQuery = (fun
Hadoop技術內幕:深入解析MapReduce架構設計與實現原理 (大資料技術叢書).epub
【下載地址】 《Hadoop技術內幕:深入解析MapReduce架構設計與實現原理》內容簡介:“Hadoop技術內幕”共兩冊,分別從原始碼的角度對“Common+HDFS”和“MapReduce的架構設計和實現原理”進行了極為詳細的分析。《Hadoop技術內幕:深入解析M
《RocketMQ技術內幕:RocketMQ架構設計與實現原理》—1.1.2 Eclipse除錯RocketMQ原始碼
1.1.2 Eclipse除錯RocketMQ原始碼 本節將展示在Eclipse中啟動NameServer、Broker,並執行訊息傳送與訊息消費示例程式。1.啟動NameServerStep1:展開namesrv模組,右鍵NamesrvStartup.java,移動到Debug As,選中Debug Co
jQuery架構設計與實現(2.1.4版本)
需要 引入 hasclass 8.4 uri and hub 組織 移除 市面上的jQuery書太多了,良莠不齊,看了那麽多總覺得少點什麽 對"幹貨",我不喜歡就事論事的寫代碼,我想把自己所學的知識點,代碼技巧,設計思想,代碼模式能很好的表達出來,所以考慮通過分析jQuer
深入理解react-router 路由的實現原理
React Router 是一個基於 React 之上的強大路由庫,它可以讓你嚮應用中快速地新增檢視和資料流,同時保持頁面與 URL 間的同步。本文從兩個方便來解析 react-router 實現原理。一:介紹 react-router 的依賴庫history;二:使用 history 庫,實現一個簡單的 r
Spring IoC 容器的設計與實現原理
上一篇文章講解的是IOC的原理,這一篇文章主要講解Spring IoC 容器的設計與實現原理 1.spring的IOC容器 在 Spring IoC 容器的設計中,容器有兩個系列,可以看成是容器的具體表現形式: BeanFactory 簡單容器:實現了容器的基本
TiDB EcoSystem Tools 原理解讀(一):TiDB-Binlog 架構演進與實現原理
簡介 TiDB-Binlog 元件用於收集 TiDB 的 binlog,並提供實時備份和同步功能。該元件在功能上類似於 MySQL 的主從複製,MySQL 的主從複製依賴於記錄的 binlog 檔案,TiDB-Binlog 元件也是如此,主要的不同點是 TiDB 是分散式的,因此需要收集各個 TiDB 例項產
【深入理解java集合】-ArryList實現原理
一、ArrayList簡介 1、概述 ArrayList是基於陣列實現的,是一個動態陣列,其容量能自動增長,類似於C語言中的動態申請記憶體,動態增長記憶體。 ArrayList不是執行緒安全的,只能用在單執行緒環境下,多執行緒環境下可以考慮用Collections.
【深入理解java集合】-LinkedList實現原理
一、LinkeddList簡介 1、LinkedList概述 LinkedList是一個一個繼承於AbstractSequentialList,並實現了List介面和Deque介面的雙端連結串列。 LinkedList底層的連結串列結構使它支援高效的插入和刪除操作,
短視訊架構設計與實現
視訊錄製模組 視訊錄製由視訊預覽、伴奏播放、視訊錄製/暫停、倍速/半速錄製四部分組成。 (1)視訊預覽 在Android&IOS平臺我們可以使用自己的Camera+OpenGL ES進行視訊的預覽,這裡的預覽過程一般就是從相機獲取紋理ID並進行諸如美顏
深入理解Java併發之synchronized實現原理
關聯文章: 本篇主要是對Java併發中synchronized關鍵字進行較為深入的探索,這些知識點結合博主對synchronized的個人理解以及相關的書籍的講解(在結尾參考資料),如有誤處,歡迎留言。 執行緒安全是併發程式
【深入理解java集合】-TreeMap實現原理
一、紅黑樹介紹 1、R-B Tree概念 紅黑樹(Red Black Tree,簡稱R-B Tree) 是一種自平衡二叉查詢樹,它雖然是複雜的,但它的最壞情況執行時間也是非常良好的,並且在實踐中是高效的: 它可以在O(log n)時間內做查詢,插入和刪除,這裡的n 是
Tensorflow 的設計與實現概述
Tensorflow 基於內部第一代機器學習系統 DistBelief 的第二代機器學習系統。 與 Borg 和 k8s 類似。 定位 通用場景,通用裝置, 通用平臺的大規模的機器學習系統 TensorFlow 的特點 通用平臺 : PC(Linux, Windo
談一款MOBA類遊戲《碼神聯盟》的服務端架構設計與實現(更新優化思路)
一、前言 《碼神聯盟》是一款為技術人做的開源情懷遊戲,每一種程式語言都是一位英雄。客戶端和服務端均使用C#開發,客戶端使用Unity3D引擎,資料庫使用MySQL。這個MOBA類遊戲是筆者在學習時期和客戶端美術策劃的小夥伴一起做的遊戲,筆者主要負責遊戲服務端開發,客戶
短連結服務架構設計與實現
場景 整個互動流程如下: 設計要點 短連結生成演算法 (1)利用放號器,初始值為0,對於每一個短連結生成請求,都遞增放號器的值,再將此值轉換為62進位制(a-zA-Z0-9),比如第一次請求時放號器的值為0,對應62進製為a,第二次請求時放號器的值為1,對應6
Web自動化測試架構設計與實現
分散式計算將網路服務帶到世界的每一個角落,這些服務又大都部署在Web應用系統中。如何保障高質量軟體或服務則是個突出的問題,其實軟體測試從來就不應該被輕視。對於一個複雜的web應用程式系統需要測試的方面太多了,特別是那些開發週期很長的系統,如果所以測試都通過手工來完成,顯然
深入理解 Java 併發之 synchronized 實現原理
關聯文章深入理解Java型別資訊(Class物件)與反射機制深入理解Java列舉型別(enum)深入理解Java註解型別(@Annotation)深入理解Java併發之synchronized實現原理本篇主要是對Java併發中synchronized關鍵字進行較為深入的探索,這些知識點結合博主對synchro
深入理解Mysql——schema設計與大表alter操作
資料型別 整數與小數型別 整數型別有如下幾種: TINYINT(1個位元組),SMALLINT(2個位元組),MEDIUMINT(3個位元組),INT(4個位元組),BIGINT(6個位元組)。 小數(實數)型別有如下幾種: FLOAT4個
企業運維監控平臺架構設計與實現
課程介紹 本課程主要介紹了企業常見的運維監控平臺的構建思路和常用軟體,講述了cacti、nagios、zabbix、ganglia、webnagios等常用監控軟體的差異和優劣,並深入介紹了通過ganglia+nagios如何快速構建一個統一運維監控平臺。 課時列表