p56頁開始學習
3.4
1.初始化所有變數:
initial=tf.global_variables_initializer()
sess.run(initial)
2.assign賦值命令
tf.assign(a,b)#把b賦值給a,注意型別要一致
w1.assign(w2)
如果賦值的時候維度不一樣則
tf.assign(a,b,validate_shape=false)
3.placeholder不一定需要定義維度
x = tf.placeholder(tf.float32,shape=(1,2),name="input")
或者直接
x = tf.placeholder(tf.float32)
但一般來說是需要定義維度以參加計算
4.seed=1存疑
5.tf.log是計算log
6.tf.clip_by_value()
tf.clip_by_value(a, min, max)#輸入乙個張量a,把a中的每乙個元素的值都壓縮在min和max之間。小於min的讓它等於min,大於max的元素的值等於max
7.cross_entropy的定義
之前手寫識別的計算過程裡面有
這裡的是新形式:
cross_entropy=-tf.reduce_mean(y_*tf.log(tf.clip_by_value(y,1e-10,1.0))
+(1-y_)*tf.log(tf.clip_by_value(1-y,1e-10,1.0)))
8.二分類問題會有特徵提取
如果有兩個特徵 x1 x2
y=[[int(x1+x2<1)] for (x1,x2) in x]
的意思就是對於(128,2)這個矩陣來說,每一行代表乙個樣本(x1,x2)比如x1是零件的質量,x2是零件的長度,當x1+x2<1就代表這個零件合格,則返回給y乙個1,最終y是乙個(128,1)的向量。
start=(i*batch_size)%dataset_size
end=min(start+batch_size,dataset_size)
選batch 用這個整除法有點意思(先存疑)
附上最終程式
#author mjy
import tensorflow as tf
import numpy as np
from numpy.random import randomstate#為了生成模擬資料集
batch_size=8#定義訓練集大小
w1=tf.variable(tf.random_normal([2,3],stddev=0.1,seed=1))
w2=tf.variable(tf.random_normal([3,1],stddev=0.1,seed=1))
x=tf.placeholder(tf.float32,shape=(none,2),name='x-input')
y_=tf.placeholder(tf.float32,shape=(none,1),name='y-input')
#這裡用none是為了在運用不同的batch的時候方便一點
#定義前向傳播:
a=tf.matmul(x,w1)
y=tf.matmul(a,w2)
#定義損失和反向傳播
y=tf.sigmoid(y)
cross_entropy=-tf.reduce_mean(y_*tf.log(tf.clip_by_value(y,1e-10,1.0))
+(1-y_)*tf.log(tf.clip_by_value(1-y,1e-10,1.0)))
train_step=tf.train.adamoptimizer(0.001).minimize(cross_entropy)
#通過隨機數生成乙個模擬資料集:
rdm=randomstate(1)
dataset_size=128
x=rdm.rand(dataset_size,2)
y=[[int(x1+x2<1)] for (x1,x2) in x]#定義規則
#建立會話以執行程式
with tf.session() as sess:
initial = tf.global_variables_initializer()
sess.run(initial)
# print(sess.run(w1))
# print(sess.run(w2))
# print(sess.run(x))
#設定訓練的輪數
steps=5000
for i in range(steps):
#依次選取batch_size個樣本進行訓練
start=(i * batch_size) % dataset_size
end=min(start+batch_size,dataset_size)#定義了每一次的樣本選取的起點到終點
sess.run(train_step,feed_dict=)
if i%1000 == 0:
total_cross_entropy=sess.run(cross_entropy,feed_dict=)
print("after %d training step(s),cross entropy on all data is %g"%
(i,total_cross_entropy))
print(sess.run(w1))
print(sess.run(w2))
實戰深度學習
回顧上一節的內容,介紹稀疏編碼。p2 稀疏編碼的推理。p3 p6 ista演算法解釋。p7 p9 用於稀疏編碼推理的座標下降 p10 回顧上一節課的內容,主要講解隨機梯度下降法。p2 l2 正則化。p3 l1 正則化。p4 偏差 方差權衡。p5 本課程主要內容包括 kaggle 實戰分析 dogs ...
深度學習實戰
dnn cnn rnn google tensorflow,社群發展資源多 facebook pytorch,caffe2 伯克利 caffe,亞馬遜 mxnet caffe針對影象方面的任務,用於cnn 有 python 和 mathlab 的介面 通過不同層的疊加實現深度神經網路 使用方法1 不...
第04課 深度學習框架 PyTorch
隨著深度學習的研究熱潮持續高漲,各種開源深度學習框架也層出不窮,包括 tensorflow pytorch caffe2 keras cntk mxnet paddle deeplearning4 lasagne neon 等等。其中,谷歌推出的 tensorflow 無疑在關注度和使用者數上都佔據...