利用tensorflow實現第乙個簡單的神經網路
#encoding:utf-8
import tensorflow as tf
# numpy生成模擬資料集
from numpy.random import randomstate
# 定義訓練資料batch大小
batch_size = 8
# 定義神經網路的引數,
w1 = tf.variable( tf.random_normal( [2,3], stddev=1, seed=1 ) )
w2 = tf.variable( tf.random_normal( [3,1], stddev=1, seed=1 ) )
# shape使用none可以方便不同batch的大小
x = tf.placeholder( tf.float32, shape=[none,2], name='x-input' )
y_ = tf.placeholder( tf.float32, shape=[none,1], name='y_input' )
# 定義神經網路傳播過程
# 線性啟用函式
a = tf.matmul( x, w1 )
y = tf.matmul( a, w2 )
# # 非線性啟用函式
# a = tf.nn.relu( tf.matmul( x, w1 ) + biases1 )
# y = tf.nn.relu( tf.matmul( x, w1 ) + biases2 )
# 定義損失函式和反向傳播演算法
cross_entropy = -tf.reduce_mean( y_*tf.log( tf.clip_by_value( 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:
# 初始化變數
init_op = tf.initialize_all_variables()
sess.run(init_op)
print sess.run(w1)
print sess.run(w2)
steps = 5000
for i in range(steps):
# 每次取一定數量的樣本訓練
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)
用tensorflow建造乙個簡單的神經網路
reference 這篇文章主要講怎樣建造乙個完整的神經網路,包括新增神經層,計算誤差,訓練步驟 我們知道乙個神經網路可能包含很多個隱藏層,所以如果我們定義乙個新增層函式,在後面如果需要增加神經層就只需要呼叫我們定義的新增層函式就可以了。神經層裡常見的引數通常有 weights,biases和激勵函...
用tensorflow搭建乙個簡單的神經網路
在神經網路板塊斷斷續續進行了4個月的摸索,逐漸形成了自己對這個領域的認識,寫成部落格一是為了分享自己的觀點,希望不足之處能得到指正 二是作為讀書周記,能督促自己能不要停下來更新部落格,持續學習。好了以下就是我的第一章,用tensorflow搭建乙個簡易的 沒有隱藏層的 神經網路。用tensorflo...
乙個簡單的tensorFlow關於神經網路的示例
這個示例源自 實戰google 深度學習框架 一書的第三章,實現了乙個簡單的前向網路的演算法。下面掛完整的 import tensorflow as tf from numpy.random import randomstate batch size 8 w1 tf.variable tf.rand...