Tensorflow入門學習筆記

1、環境準備html

一、安裝python:下載地址https://www.python.org/downloads/windows/下載並安裝(推薦python3)java

二、安裝對應python版本的庫:https://www.lfd.uci.edu/~gohlke/pythonlibs/node

(1)Numpy庫:python

(2)Tensorflow庫:git

  1. 測試安裝:

三、安裝jdk:github

下載地址——https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.htmlwindows

四、開發環境方法一使用elipse開發(推薦java版本,neon),直接解壓到安裝目錄便可:網絡

①下載地址——https://www.eclipse.org/downloads/packages/oracle

②安裝pydev插件——>運行Eclipse以後,選擇help-->Install new Software——>點擊Add,添加pydev:http://pydev.org/updates/dom

五、開發環境方法二安裝eclipse+pydev插件——>將帶pydev插件的eclipse(eclipse-4.6.1-with-pydev.zip)解壓便可。

2、Tensorflow = Tensor(張量) + Flow(計算圖)

一、優點

    • 平臺支持性良好,Windows, Linux, macOS等,IOS和Android;
    • 提供簡單且靈活的Python API接口,內部使用C++進行優化;
    • 豐富的算子,能夠很容易搭建各類深度學習模型,如CNN和RNN模型;
    • 提供可視化工具TensorBoard,這個是TF獨有的優點;
    • 支持CPU和GPU,支持分佈式多機多卡訓練;

二、張量(任意維度):

(1)張量=shape+數據類型+名字

(2)數據類型:

( 3 )幾種常見建立張量的方法:

a = tf.constant([1, 1, 1]) # 定義一個costant張量

b = tf.zeros([2, 3], tf.int32) # [[0, 0, 0], [0, 0, 0]]

c = tf.ones([2, 3], tf.int32) # [[1, 1, 1], [1, 1, 1]]

d = tf.random_normal([5, 5], mean=0.0, stddev=1.0) # 均值爲0,標準差爲1的高斯分佈

e = tf.random_uniform([5, 5], minval=0, maxval=1) # [0, 1]內的均勻分佈

f = tf.placeholder(tf.int32, [3,]) # 定義一個佔位張量

(4)變量(有狀態的張量,就是存儲的實際值是能夠被改變的)

主要使用兩個類:tf.Variable類和tf.train.Saver類。變量必需要先被初始化(initialize),並且能夠在訓練時和訓練後保存(save)到磁盤中。以後能夠再恢復(restore)保存的變量值來訓練和測試模型。

①變量的聲明:

a = tf.Variable([[2, 3], [1, 2]])   # 初始值爲[[2, 3], [1, 2]]

b = tf.Variable((tf.zeros([10, 10])))  # 初始值爲全0,shape爲[10,10]的張量

②初始化:

init = tf.global_variables_initializer() # 初始化全部變量的算子

with tf.Session() as sess:

    sess.run(init)   # 執行初始化,此時變量被填值

③賦值:

assign_op = a.assign(b) # a的值用b替換

sess.run(assign_op)

三、計算圖 由一系列節點(nodes)組成的圖模型,每一個節點對應的是TF的一個算子(operation),每一個算子會有輸入與輸出,而且輸入和輸出都是張量。

a = tf.constant(5) b = tf.constant(3) c = tf.multiply(a, b) d = tf.add(a, b)

e = tf.add(c, d)

四、定義一個模型:準備數據——>輸入——>定義網絡——>輸出——>定義損失函數——>定義優化器——>定義精度——>啓動TF訓練——>模型保存和日誌:

(1)保存:

sess = tf.Session()

saver = tf.train.Saver()

saver.save(sess, 'my-model',                           global_step=step,write_meta_graph=False)

(2)加載:

sess = tf.Session()

saver.restore(sess, ‘my-model')

(3)日誌:

生成計算圖:writer = tf.summary.FileWriter('./log', sess.graph)

生成張量圖:

tf.summary.scalar('loss', loss)

merge_op = tf.summary.merge_all()

merge_sum = sess.run([merge_op ], {tf_x: x, tf_y: y})

writer.add_summary(merge_sum, step) 

四、模型組成http://playground.tensorflow.org/

模型    輸入:數據——>隱藏層:1-n——>輸出:y——>損失函數

訓練參數    Epoch——>Learning rate——>Activation——>Batch size

五、幾個概念:

①經常使用優化器(demo_gradient.py)

GradientDescentOptimizer

MomentumOptimizer

RMSPropOptimizer

AdamOptimizer(通常用這個)

②Dropout

③批量規範化

  • 正則化(L1,L2),L2也叫Weight_decay

⑤數據加強

  • 卷積神經網絡

卷積:卷積核大小——>步長——>濾波器(卷積核)個數——>padding

池化:最大、最小、平均

pool_size——>步長——>padding

全鏈接

 

參照學習:https://morvanzhou.github.io/tutorials/machine-learning/tensorflow/

相關文章
相關標籤/搜索