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
三、安裝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(計算圖)
一、優點
二、張量(任意維度):
(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
③批量規範化
⑤數據加強
卷積:卷積核大小——>步長——>濾波器(卷積核)個數——>padding
池化:最大、最小、平均
pool_size——>步長——>padding
全鏈接
參照學習:https://morvanzhou.github.io/tutorials/machine-learning/tensorflow/