tensorflow前向傳播

2021-08-29 01:30:43 字數 4016 閱讀 3480

1.demo1

import tensorflow as tf

#seed設定隨機種子,每次執行結果一樣

w1 = tf.variable(tf.random_normal((2, 3), stddev=1, seed=1))

w2 = tf.variable(tf.random_normal((3, 1), stddev=1, seed=1))

x = tf.constant([[0.7, 0.9]])

a = tf.matmul(x, w1)

y = tf.matmul(a, w2)

with tf.session() as sess:

#print(sess.run(w1.initializer))

#print(sess.run(w2.initializer))

sess.run(tf.global_variables_initializer())

print(sess.run(w1))

print(sess.run(w2))

print(sess.run(y))

"""[[-0.8113182 1.4845988 0.06532937]

[-2.4427042 0.0992484 0.5912243 ]]

[[-0.8113182 ]

[ 1.4845988 ]

[ 0.06532937]]

[[3.957578]]

"""

2.demo2

import tensorflow as tf

#seed設定隨機種子,每次執行結果一樣

w1 = tf.variable(tf.random_normal((2, 3), stddev=1, seed=1))

w2 = tf.variable(tf.random_normal((3, 1), stddev=1, seed=1))

#x = tf.constant([[0.7, 0.9]])

x = tf.placeholder(dtype=tf.float32, shape=(3, 2))

#用於提供資料,定義位置,資料在執行時再指定

a = tf.matmul(x, w1)

y = tf.matmul(a, w2)

with tf.session() as sess:

sess.run(tf.global_variables_initializer())

print(sess.run(w1))

print(sess.run(w2))

print(sess.run(y, feed_dict=))

#feed_dict提供三個樣例資料

"""[[-0.8113182 1.4845988 0.06532937]

[-2.4427042 0.0992484 0.5912243 ]]

[[-0.8113182 ]

[ 1.4845988 ]

[ 0.06532937]]

[[3.957578 ]

[1.1537654]

[3.1674924]]

"""

3.demo3

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)

#定義損失函式和方向傳播演算法

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:

init_op = tf.global_variables_initializer()

sess.run(init_op)

print(sess.run(w1))

print(sess.run(w2))

#設定訓練輪數

steps = 5000

for i in range(steps):

#每次選取batch個樣本進行訓練

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))

"""[[-0.8113182 1.4845988 0.06532937]

[-2.4427042 0.0992484 0.5912243 ]]

[[-0.8113182 ]

[ 1.4845988 ]

[ 0.06532937]]

after 0 training step(s), cross entropy on all data is 0.314006

after 1000 training step(s), cross entropy on all data is 0.0684551

after 2000 training step(s), cross entropy on all data is 0.033715

after 3000 training step(s), cross entropy on all data is 0.020558

after 4000 training step(s), cross entropy on all data is 0.0136867

[[-2.548655 3.0793087 2.8951712]

[-4.1112747 1.6259071 3.3972702]]

[[-2.3230937]

[ 3.3011687]

[ 2.4632082]]

"""

TensorFlow入門 03 前向傳播演算法簡述

這裡以最簡單的全連線神經網路為例,講解前向傳播演算法。構成乙個神經網路的最小單元。神經元的輸入 有多個輸入,可以是整個神經網路的輸入,也可以是上層神經元的輸出。神經元的輸出 乙個神經元只有乙個輸出。乙個最簡單的神經元結構的輸出就是所有輸入的加權和,而不同輸入的權重就是神經元的引數。神經網路的優化 指...

前向傳播演算法

乙個神經元有多個輸入和乙個輸出,每個神經元的輸入既可以是其他神經元的輸出也可以是整個神經網路的輸入。所謂神經網路的結構就是指的是不同的神經元之間的連線結構。如圖所示,乙個最簡單的神經元結構的輸出就是所有輸入的加權和,而不同的輸入的權重就是神經元的引數。神經網路的優化過程就是優化神經元中引數的取值的過...

3 2前向傳播

前向傳播 搭建模型,實現推理 以全連線網路為例 例如 生產一批零件講體積x1,和重量x2為特徵輸入nn,通過nn後輸入乙個數值。神經網路圖 變數初始化,計算圖節點運算都要用會話 with結構 實現 with tf.session as sess sess.run 變數初始化 在sess.run函式中...