>[[1,2,3]]" />
0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

TensorFlow學(xué)習(xí)之建立一個(gè)神經(jīng)網(wǎng)絡(luò)添加層

lviY_AI_shequ ? 來(lái)源:未知 ? 作者:李倩 ? 2018-03-31 10:56 ? 次閱讀

1.建立一個(gè)神經(jīng)網(wǎng)絡(luò)添加層

輸入值、輸入的大小、輸出的大小和激勵(lì)函數(shù)

學(xué)過(guò)神經(jīng)網(wǎng)絡(luò)的人看下面這個(gè)圖就明白了,不懂的去看看我的另一篇博客(http://www.cnblogs.com/wjy-lulu/p/6547542.html)

def add_layer(inputs , in_size , out_size , activate = None):

Weights = tf.Variable(tf.random_normal([in_size,out_size]))#隨機(jī)初始化

baises = tf.Variable(tf.zeros([1,out_size])+0.1)#可以隨機(jī)但是不要初始化為0,都為固定值比隨機(jī)好點(diǎn)

y = tf.matmul(inputs, Weights) + baises #matmul:矩陣乘法,multipy:一般是數(shù)量的乘法

if activate:

y = activate(y)

return y

2.訓(xùn)練一個(gè)二次函數(shù)

import tensorflow as tf

import numpy as np

def add_layer(inputs , in_size , out_size , activate = None):

Weights = tf.Variable(tf.random_normal([in_size,out_size]))#隨機(jī)初始化

baises = tf.Variable(tf.zeros([1,out_size])+0.1)#可以隨機(jī)但是不要初始化為0,都為固定值比隨機(jī)好點(diǎn)

y = tf.matmul(inputs, Weights) + baises #matmul:矩陣乘法,multipy:一般是數(shù)量的乘法

if activate:

y = activate(y)

return y

if __name__ == '__main__':

x_data = np.linspace(-1,1,300,dtype=np.float32)[:,np.newaxis]#創(chuàng)建-1,1的300個(gè)數(shù),此時(shí)為一維矩陣,后面轉(zhuǎn)化為二維矩陣===[1,2,3]-->>[[1,2,3]]

noise = np.random.normal(0,0.05,x_data.shape).astype(np.float32)#噪聲是(1,300)格式,0-0.05大小

y_data = np.square(x_data) - 0.5 + noise #帶有噪聲的拋物線

xs = tf.placeholder(tf.float32,[None,1]) #外界輸入數(shù)據(jù)

ys = tf.placeholder(tf.float32,[None,1])

l1 = add_layer(xs,1,10,activate=tf.nn.relu)

prediction = add_layer(l1,10,1,activate=None)

loss = tf.reduce_mean(tf.reduce_sum(tf.square(ys - prediction),reduction_indices=[1]))#誤差

train_step = tf.train.GradientDescentOptimizer(0.1).minimize(loss)#對(duì)誤差進(jìn)行梯度優(yōu)化,步伐為0.1

sess = tf.Session()

sess.run( tf.global_variables_initializer())

for i in range(1000):

sess.run(train_step, feed_dict={xs: x_data, ys: y_data})#訓(xùn)練

if i%50 == 0:

print(sess.run(loss, feed_dict={xs: x_data, ys: y_data}))#查看誤差

3.動(dòng)態(tài)顯示訓(xùn)練過(guò)程

顯示的步驟程序之中部分進(jìn)行說(shuō)明,其它說(shuō)明請(qǐng)看其它博客(http://www.cnblogs.com/wjy-lulu/p/7735987.html)

import tensorflow as tf

import numpy as np

import matplotlib.pyplot as plt

def add_layer(inputs , in_size , out_size , activate = None):

Weights = tf.Variable(tf.random_normal([in_size,out_size]))#隨機(jī)初始化

baises = tf.Variable(tf.zeros([1,out_size])+0.1)#可以隨機(jī)但是不要初始化為0,都為固定值比隨機(jī)好點(diǎn)

y = tf.matmul(inputs, Weights) + baises #matmul:矩陣乘法,multipy:一般是數(shù)量的乘法

if activate:

y = activate(y)

return y

if __name__ == '__main__':

x_data = np.linspace(-1,1,300,dtype=np.float32)[:,np.newaxis]#創(chuàng)建-1,1的300個(gè)數(shù),此時(shí)為一維矩陣,后面轉(zhuǎn)化為二維矩陣===[1,2,3]-->>[[1,2,3]]

noise = np.random.normal(0,0.05,x_data.shape).astype(np.float32)#噪聲是(1,300)格式,0-0.05大小

y_data = np.square(x_data) - 0.5 + noise #帶有噪聲的拋物線

fig = plt.figure('show_data')# figure("data")指定圖表名稱

ax = fig.add_subplot(111)

ax.scatter(x_data,y_data)

plt.ion()

plt.show()

xs = tf.placeholder(tf.float32,[None,1]) #外界輸入數(shù)據(jù)

ys = tf.placeholder(tf.float32,[None,1])

l1 = add_layer(xs,1,10,activate=tf.nn.relu)

prediction = add_layer(l1,10,1,activate=None)

loss = tf.reduce_mean(tf.reduce_sum(tf.square(ys - prediction),reduction_indices=[1]))#誤差

train_step = tf.train.GradientDescentOptimizer(0.1).minimize(loss)#對(duì)誤差進(jìn)行梯度優(yōu)化,步伐為0.1

sess = tf.Session()

sess.run( tf.global_variables_initializer())

for i in range(1000):

sess.run(train_step, feed_dict={xs: x_data, ys: y_data})#訓(xùn)練

if i%50 == 0:

try:

ax.lines.remove(lines[0])

except Exception:

pass

prediction_value = sess.run(prediction, feed_dict={xs: x_data})

lines = ax.plot(x_data,prediction_value,"r",lw = 3)

print(sess.run(loss, feed_dict={xs: x_data, ys: y_data}))#查看誤差

plt.pause(2)

while True:

plt.pause(0.01)

4.TensorBoard整體結(jié)構(gòu)化顯示

A.利用with tf.name_scope("name")創(chuàng)建大結(jié)構(gòu)、利用函數(shù)的name="name"去創(chuàng)建小結(jié)構(gòu):tf.placeholder(tf.float32,[None,1],name="x_data")

B.利用writer = tf.summary.FileWriter("G:/test/",graph=sess.graph)創(chuàng)建一個(gè)graph文件

C.利用TessorBoard去執(zhí)行這個(gè)文件

這里得注意--->>>首先到你存放文件的上一個(gè)目錄--->>然后再去運(yùn)行這個(gè)文件

tensorboard --logdir=test

(被屏蔽的GIF動(dòng)圖,具體安裝操作歡迎戳“原文鏈接”哈!)

5.TensorBoard局部結(jié)構(gòu)化顯示

A. tf.summary.histogram(layer_name+"Weight",Weights):直方圖顯示

B. tf.summary.scalar("Loss",loss):折線圖顯示,loss的走向決定你的網(wǎng)絡(luò)訓(xùn)練的好壞,至關(guān)重要一點(diǎn)

C.初始化與運(yùn)行設(shè)定的圖表

merge = tf.summary.merge_all()#合并圖表2 writer = tf.summary.FileWriter("G:/test/",graph=sess.graph)#寫(xiě)進(jìn)文件3 result = sess.run(merge,feed_dict={xs:x_data,ys:y_data})#運(yùn)行打包的圖表merge4 writer.add_summary(result,i)#寫(xiě)入文件,并且單步長(zhǎng)50

完整代碼及顯示效果:

import tensorflow as tf

import numpy as np

import matplotlib.pyplot as plt

def add_layer(inputs , in_size , out_size , n_layer = 1 , activate = None):

layer_name = "layer" + str(n_layer)

with tf.name_scope(layer_name):

with tf.name_scope("Weights"):

Weights = tf.Variable(tf.random_normal([in_size,out_size]),name="W")#隨機(jī)初始化

tf.summary.histogram(layer_name+"Weight",Weights)

with tf.name_scope("Baises"):

baises = tf.Variable(tf.zeros([1,out_size])+0.1,name="B")#可以隨機(jī)但是不要初始化為0,都為固定值比隨機(jī)好點(diǎn)

tf.summary.histogram(layer_name+"Baises",baises)

y = tf.matmul(inputs, Weights) + baises #matmul:矩陣乘法,multipy:一般是數(shù)量的乘法

if activate:

y = activate(y)

tf.summary.histogram(layer_name+"y_sum",y)

return y

if __name__ == '__main__':

x_data = np.linspace(-1,1,300,dtype=np.float32)[:,np.newaxis]#創(chuàng)建-1,1的300個(gè)數(shù),此時(shí)為一維矩陣,后面轉(zhuǎn)化為二維矩陣===[1,2,3]-->>[[1,2,3]]

noise = np.random.normal(0,0.05,x_data.shape).astype(np.float32)#噪聲是(1,300)格式,0-0.05大小

y_data = np.square(x_data) - 0.5 + noise #帶有噪聲的拋物線

fig = plt.figure('show_data')# figure("data")指定圖表名稱

ax = fig.add_subplot(111)

ax.scatter(x_data,y_data)

plt.ion()

plt.show()

with tf.name_scope("inputs"):

xs = tf.placeholder(tf.float32,[None,1],name="x_data") #外界輸入數(shù)據(jù)

ys = tf.placeholder(tf.float32,[None,1],name="y_data")

l1 = add_layer(xs,1,10,n_layer=1,activate=tf.nn.relu)

prediction = add_layer(l1,10,1,n_layer=2,activate=None)

with tf.name_scope("loss"):

loss = tf.reduce_mean(tf.reduce_sum(tf.square(ys - prediction),reduction_indices=[1]))#誤差

tf.summary.scalar("Loss",loss)

with tf.name_scope("train_step"):

train_step = tf.train.GradientDescentOptimizer(0.1).minimize(loss)#對(duì)誤差進(jìn)行梯度優(yōu)化,步伐為0.1

sess = tf.Session()

merge = tf.summary.merge_all()#合并

writer = tf.summary.FileWriter("G:/test/",graph=sess.graph)

sess.run( tf.global_variables_initializer())

for i in range(1000):

sess.run(train_step, feed_dict={xs: x_data, ys: y_data})#訓(xùn)練

if i%100 == 0:

result = sess.run(merge,feed_dict={xs:x_data,ys:y_data})#運(yùn)行打包的圖表merge

writer.add_summary(result,i)#寫(xiě)入文件,并且單步長(zhǎng)50

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴

原文標(biāo)題:TensorFlow學(xué)習(xí)之神經(jīng)網(wǎng)絡(luò)的構(gòu)建

文章出處:【微信號(hào):AI_shequ,微信公眾號(hào):人工智能愛(ài)好者社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    TFCNN:Tensorflow構(gòu)建卷積神經(jīng)網(wǎng)絡(luò)CNN的嘻嘻哈哈事詳細(xì)攻略

    TFCNN:Tensorflow構(gòu)建卷積神經(jīng)網(wǎng)絡(luò)CNN的嘻嘻哈哈事詳細(xì)攻略
    發(fā)表于 12-19 17:03

    KerasML~P:基于Keras中建立的回歸預(yù)測(cè)的神經(jīng)網(wǎng)絡(luò)模型

    KerasML~P:基于Keras中建立的回歸預(yù)測(cè)的神經(jīng)網(wǎng)絡(luò)模型(根據(jù)200個(gè)數(shù)據(jù)樣本預(yù)測(cè)新的5+1個(gè)樣本)——回歸預(yù)測(cè)
    發(fā)表于 12-20 10:43

    matplotlib動(dòng)態(tài)演示深度學(xué)習(xí)tensorflow神經(jīng)網(wǎng)絡(luò)系統(tǒng)自動(dòng)學(xué)習(xí)散點(diǎn)(二次函數(shù)+noise)并優(yōu)化修正并且將輸出結(jié)果可視化

    TFNN:matplotlib動(dòng)態(tài)演示深度學(xué)習(xí)tensorflow神經(jīng)網(wǎng)絡(luò)系統(tǒng)自動(dòng)學(xué)習(xí)散點(diǎn)
    發(fā)表于 12-21 10:48

    【案例分享】基于BP算法的前饋神經(jīng)網(wǎng)絡(luò)

    `BP神經(jīng)網(wǎng)絡(luò)首先給出只包含個(gè)的BP神經(jīng)網(wǎng)絡(luò)模型(兩
    發(fā)表于 07-21 04:00

    【案例分享】ART神經(jīng)網(wǎng)絡(luò)與SOM神經(jīng)網(wǎng)絡(luò)

    種常用的無(wú)監(jiān)督學(xué)習(xí)策略,在使用改策略時(shí),網(wǎng)絡(luò)的輸出神經(jīng)元相互競(jìng)爭(zhēng),每時(shí)刻只有
    發(fā)表于 07-21 04:30

    淺談深度學(xué)習(xí)TensorFlow

    神經(jīng)網(wǎng)絡(luò)和深度學(xué)習(xí)的概念,但為了完整起見(jiàn),我們將在這里介紹基礎(chǔ)知識(shí),并探討 TensorFlow 的哪些特性使其成為深度學(xué)習(xí)的熱門(mén)選擇。神經(jīng)網(wǎng)絡(luò)
    發(fā)表于 07-28 14:34

    【AI學(xué)習(xí)】第3篇--人工神經(jīng)網(wǎng)絡(luò)

    `本篇主要介紹:人工神經(jīng)網(wǎng)絡(luò)的起源、簡(jiǎn)單神經(jīng)網(wǎng)絡(luò)模型、更多神經(jīng)網(wǎng)絡(luò)模型、機(jī)器學(xué)習(xí)的步驟:訓(xùn)練與預(yù)測(cè)、訓(xùn)練的兩階段:正向推演與反向傳播、以Tensor
    發(fā)表于 11-05 17:48

    如何移植個(gè)CNN神經(jīng)網(wǎng)絡(luò)到FPGA中?

    二次開(kāi)發(fā)。移植個(gè)神經(jīng)網(wǎng)絡(luò)到Lattice FPGA上可以分為三步:第步:使用Tensorflow, Caffe, Keras訓(xùn)練自己的
    發(fā)表于 11-26 07:46

    如何構(gòu)建神經(jīng)網(wǎng)絡(luò)

    原文鏈接:http://tecdat.cn/?p=5725 神經(jīng)網(wǎng)絡(luò)種基于現(xiàn)有數(shù)據(jù)創(chuàng)建預(yù)測(cè)的計(jì)算系統(tǒng)。如何構(gòu)建神經(jīng)網(wǎng)絡(luò)?神經(jīng)網(wǎng)絡(luò)包括:輸入
    發(fā)表于 07-12 08:02

    基于BP神經(jīng)網(wǎng)絡(luò)的PID控制

    最近在學(xué)習(xí)電機(jī)的智能控制,上周學(xué)習(xí)了基于單神經(jīng)元的PID控制,這周研究基于BP神經(jīng)網(wǎng)絡(luò)的PID控制。神經(jīng)網(wǎng)絡(luò)具有任意非線性表達(dá)能力,可以通過(guò)
    發(fā)表于 09-07 07:43

    卷積神經(jīng)網(wǎng)絡(luò)簡(jiǎn)介:什么是機(jī)器學(xué)習(xí)?

    列文章將只關(guān)注卷積神經(jīng)網(wǎng)絡(luò) (CNN)。CNN的主要應(yīng)用領(lǐng)域是輸入數(shù)據(jù)中包含的對(duì)象的模式識(shí)別和分類。CNN是種用于深度學(xué)習(xí)的人工神經(jīng)網(wǎng)絡(luò)。此類網(wǎng)絡(luò)
    發(fā)表于 02-23 20:11

    TensorFlow寫(xiě)個(gè)簡(jiǎn)單的神經(jīng)網(wǎng)絡(luò)

    這次就用TensorFlow寫(xiě)個(gè)神經(jīng)網(wǎng)絡(luò),這個(gè)神經(jīng)網(wǎng)絡(luò)寫(xiě)的很簡(jiǎn)單,就三種,輸入--隱藏--
    的頭像 發(fā)表于 03-23 15:37 ?5178次閱讀
    用<b class='flag-5'>TensorFlow</b>寫(xiě)個(gè)簡(jiǎn)單的<b class='flag-5'>神經(jīng)網(wǎng)絡(luò)</b>

    使用tensorflow構(gòu)建個(gè)簡(jiǎn)單神經(jīng)網(wǎng)絡(luò)

    給大家分享個(gè)案例,如何使用tensorflow 構(gòu)建個(gè)簡(jiǎn)單神經(jīng)網(wǎng)絡(luò)。首先我們需要?jiǎng)?chuàng)建我們的樣
    的頭像 發(fā)表于 10-16 08:41 ?2362次閱讀

    卷積神經(jīng)網(wǎng)絡(luò)層級(jí)結(jié)構(gòu) 卷積神經(jīng)網(wǎng)絡(luò)的卷積講解

    卷積神經(jīng)網(wǎng)絡(luò)層級(jí)結(jié)構(gòu) 卷積神經(jīng)網(wǎng)絡(luò)的卷積講解 卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)是種基于深
    的頭像 發(fā)表于 08-21 16:49 ?8992次閱讀

    卷積神經(jīng)網(wǎng)絡(luò)共有幾層 卷積神經(jīng)網(wǎng)絡(luò)模型三

    卷積神經(jīng)網(wǎng)絡(luò)共有幾層 卷積神經(jīng)網(wǎng)絡(luò)模型三? 卷積神經(jīng)網(wǎng)絡(luò) (Convolutional Neural Networks,CNNs) 是
    的頭像 發(fā)表于 08-21 17:11 ?7099次閱讀