1. 程式人生 > >深入理解TensorFlow架構設計與實現原理 3 :基礎概念

深入理解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如何快速構建一個統一運維監控平臺。 課時列表