深入理解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
相關文章
- SpringCloud Alibaba實戰(3:儲存設計與基礎架構設計)SpringGCCloud架構
- 反思|Android 列表分頁元件Paging的設計與實現:架構設計與原理解析Android元件架構
- TiDB Ecosystem Tools 原理解讀系列(三)TiDB-DM 架構設計與實現原理TiDB架構
- Hadoop技術內幕:深入解析YARN架構設計與實現原理 附下載地址HadoopYarn架構
- 架構設計之一——基礎架構架構
- Tomcat 架構原理解析到架構設計借鑑Tomcat架構
- 理解Spring(二):AOP 的概念與實現原理Spring
- 基於Vue3+TS的Monorepo前端專案架構設計與實現VueMono前端架構
- Sealos 基礎教程:Sealos Devbox 的架構原理解析dev架構
- React基礎與原理實現React
- 夯實Java基礎系列8:深入理解Java內部類及其實現原理Java
- 夯實Java基礎系列18:深入理解Java內部類及其實現原理Java
- 架構設計 | 分散式事務①概念簡介和基礎理論架構分散式
- Fabric基礎架構原理(2):共識與交易架構
- TiDB EcoSystem Tools 原理解讀(一):TiDB-Binlog 架構演進與實現原理TiDB架構
- TensorFlow 計算與智慧基礎
- 【深入淺出 Yarn 架構與實現】4-3 RM 管理 NodeManagerYarn架構
- 深入理解ReentrantLock的實現原理ReentrantLock
- 深入HBase架構原理架構
- 深入高可用架構原理與實踐 書籍學習架構
- IM 去中心化概念模型與架構設計中心化模型架構
- 【深入理解Go】協程設計與排程原理(上)Go
- 【深入理解Go】協程設計與排程原理(下)Go
- 道觀小程式架構設計與實現分析架構
- 手撕商城系統架構設計與實現架構
- 深入理解DES演算法:原理、實現與應用演算法
- 深入理解lambada架構架構
- 理解Underscore的設計架構架構
- Fabric基礎架構原理(4):鏈碼架構
- 從0到10億,微信後臺架構及基礎設施設計與實踐!架構
- 【深入淺出 Yarn 架構與實現】6-3 NodeManager 分散式快取Yarn架構分散式快取
- HBase架構與基礎命令架構
- LVS基礎-四種模式原理與實現模式
- 讀軟體開發安全之道:概念、設計與實施01基礎
- Uber實時資料基礎設施:分散式計算架構分散式架構
- Java程式設計良心推薦——分散式架構原理解析Java程式設計分散式架構
- 深入解析 ResNet:實現與原理
- 深入瞭解Mybatis架構設計MyBatis架構