簡單搭建神經網路

2021-08-21 20:49:23 字數 1906 閱讀 2534

簡單的神經網路:準備,前傳,後傳,迭代

下面是乙個簡單的神經網路搭建的**

**:

#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...