tensorfow入門4 構建隱藏層

2021-09-25 20:23:18 字數 2174 閱讀 6793

構建神經網路之隱藏層

import tensorflow as tf

import numpy as np

'''定義新增層,引數依次為輸入資料、上一層節點數、隱藏層神經元個數即輸出資料形狀、激勵函式(=none表示無激勵函式)

'''def

add_layer

(inputs,in_size,out_size,activation_function=

none):

weights=tf.variable(tf.random_normal(

[in_size,out_size]))

#權重weight採用生成正態分佈隨機變數矩陣,行為in_size,列為out_size

biases=tf.variable(tf.zeros([1

,out_size])+

0.1)

#偏差矩陣為1行out_size列的0.1

y=tf.matmul(inputs,weights)

+biases

#y=inouts*weight+biases

#判斷activation_function是否存在,若不存在則直接輸出y,否則將y傳入激勵函式activation_function

if activation_function is

none

: outputs=y

else

: outputs=activation_function(y)

#將y值傳入activation_function

#函式返回outputs

return outputs

x_data=np.linspace(-1

,1,300)[

:,np.newaxis]

#np.linespace表示-1到1之間等分成300份的一維陣列

#[:,np.newaxis]表示列新增新的維度,x_data成為300行1列的矩陣,形狀從乙個一維陣列(30,)變成(30,1)

noise=np.random.normal(0,

0.05

,x_data.shape)

#加入雜訊,y會在x^2-0.5的線附近出現,使得資料更加真實,格式與x_data保持一致

y_data=np.square(x_data)

-0.5

+noise

#y=x^2-0.5+noise

xs=tf.placeholder(tf.float32,

[none,1

])ys=tf.placeholder(tf.float32,

[none,1

])#用placeholder佔位,none表示接受任意資料

l1=add_layer(xs,1,

10,activation_function=tf.nn.relu)

#l1定義為1行10列的新增層,即新增層l1輸入為x_data,輸入層有1個節點,本層有10個神經元,激勵函式為relu

prediction=add_layer(l1,10,

1,activation_function=

none

)#輸出層

loss=tf.reduce_mean(tf.reduce_sum(tf.square(ys-prediction)

,reduction_indices =[1

]))#定義損失函式,每個實際值與**值差的平方求和再求平均數,計算得分

train_step=tf.train.gradientdescentoptimizer(

0.1)

.minimize(loss)

#定義反向傳播函式,使用梯度下降法使得分變小

init=tf.global_variables_initializer(

)#初始化變數

with tf.session(

)as sess:

sess.run(init)

for i in

range

(1000):

sess.run(train_step,feed_dict=)if

(i%50==0

):print

(sess.run(loss,feed_dict=))

#列印損失函式得分

loss得分情況輸出如下,可以看到**越來越準確

scala總結 4 隱式轉換以及隱式引數

隱式轉換 implicit def inttostring i int i.tostring implicit def可以對一種型別的引數自動做轉換,在上面的隱式轉換作用域中,所有int 如果不符合編譯要求,會先被轉換為string 不可有多個隱式轉換,如再加乙個implicit def intto...

Scala入門之隱式轉換與隱式引數

隱式轉換是一項強大的程式語言功能,它不僅能夠簡化程式設計,也能夠使程式具有很強的靈活性。隱式函式的名稱對結構沒有影響.函式可以是任何名字,只看引數與返回,也就是看能不能把傳入的引數變成需要的型別就行了。隱式轉換可以定義在目標檔案當中,即隱式轉換函式與目標 在同乙個檔案當中,也可以將隱式轉換集中放置在...

構建之法筆記4

現在的開發往往是很多人合作完成一款軟體應用,不同的開發人員之間就存在依賴關係。我需要呼叫你寫的 模組,你也需要呼叫我寫的 模組,但是因為不了解模組的變化,模組沒有達到高內聚低耦合造成了對其他模組的影響,往往會產生錯誤。在確定發布這個模組的時候,要經過完整的單元測試,為了達到事半功倍的效果,我們可以把...