簡單的神經網路:準備,前傳,後傳,迭代
下面是乙個簡單的神經網路搭建的**
**:
#coding:utf-8
import tensorflow as tf
import numpy as np
batch_size=8
seed = 23455
#基於seed產生隨機數
rng = np.random.randomstate(seed)
#隨機數返回32行2列的矩陣,作為輸入資料集
x = rng.rand(32,2)
#從x矩陣中取出一行,求和後判斷結果,小於1給y賦值1,不大於1給y賦值0
#y作為輸入資料集的標籤(正確結果)
y = [[int(x0 + x1 < 1)] for (x0,x1) in x]
print("x:\n",x)
print("y:\n",y)
#定義神經網路的輸入、引數和輸出,定義向前傳播過程
x=tf.placeholder(tf.float32,shape=(none,2))
y_=tf.placeholder(tf.float32,shape=(none,1))
w1 = tf.variable(tf.random_normal([2,3],stddev=1,seed=1))
w2 = tf.variable(tf.random_normal([3,1],stddev=1,seed=1))
a = tf.matmul(x,w1)
y = tf.matmul(a,w2)
#定義損失函式及反向傳播方法
loss = tf.reduce_mean(tf.square(y-y_))
#train_step = tf.train.gradientdescentoptimizer(0.001).minimize(loss)
#train_step = tf.train.momentumoptimizer(0.001,0.9).minimize(loss)
train_step = tf.train.adamoptimizer(0.001).minimize(loss)
#生成會話,訓練steps輪
with tf.session() as sess :
init_op = tf.global_variables_initializer()
sess.run(init_op)
#輸出目前(未經訓練)的引數取值
print("w1:\n",sess.run(w1))
print("w2:\n",sess.run(w2))
print("\n")
#訓練模型
steps = 3000
for i in range(steps):
start = (i*batch_size)%32
end = start + batch_size
sess.run(train_step,feed_dict=)
if i % 500 ==0:
total_lose = sess.run(loss,feed_dict=)
print("after train %d step , loss on all data is %g"%(i,total_lose))
#輸出訓練後的引數取值
print("\n")
print("w1\n",sess.run(w1))
print("w2\n",sess.run(w2))
執行截圖
本人親測,不同的優化器,效果不同,迴圈迭代的次數會影響結果,但是到了一定值,結果不變。
簡單神經網路的搭建
coding utf 8 created on wed mar 14 09 50 13 2018 author 102121 from tensorflow.examples.tutorials.mnist import input data import tensorflow as tf 匯入mn...
神經網路的簡單搭建
bp神經網路是一種按誤差逆傳播演算法訓練的多層前饋網路,是目前應用最廣泛的神經網路模型之一。bp網路能學習和存貯大量的 輸入 輸出模式對映關係,而無需事前揭示描述這種對映關係的數學方程。它的學習規則是使用最速下降法,通過反向傳播來不斷 調整網路的權值和閾值,使網路的誤差平方和最小。通俗一點講就是一種...
搭建神經網路
1.import 2.train,test 3.model tf.keras.model.sequential 在sequential中描述網路結構,相當於走一遍前向傳播 4.model.compile 在compile中配置訓練方法,選擇哪個優化器,選擇什麼損失函式,選擇什麼評價指標 5.mode...