亚洲精品久久久久久久久久久,亚洲国产精品一区二区制服,亚洲精品午夜精品,国产成人精品综合在线观看,最近2019中文字幕一页二页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

使用tensorflow構建一個簡單神經網(wǎng)絡

電子設計 ? 2018-10-16 08:41 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

給大家分享一個案例,如何使用tensorflow 構建一個簡單神經網(wǎng)絡。首先我們需要創(chuàng)建我們的樣本,由于是監(jiān)督學習,所以還是需要label的。為了簡單起見,我們只創(chuàng)建一個樣本進行訓練, 可以當做是在模擬隨機梯度下降的過程

。 代碼如下:

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

y_ = tf.constant([[1.0]])

我們使用tf中的常量來創(chuàng)建樣本和label。 這是一個有兩個特征的樣本。

然后定義每一層的權重和偏差變量

w1 = tf.Variable(tf.random_normal([2,3], stddev=1, seed=1))

w2 = tf.Variable(tf.random_normal([3,1], stddev=1, seed=1))

b1 = tf.Variable(tf.zeros([3]))

b2 = tf.Variable(tf.zeros([1]))

根據(jù)上一節(jié)講的內容,我們使用tf的變量來生成權重和偏差。

神經網(wǎng)絡模型

我們的神經網(wǎng)絡模型大概如下圖:

上面我們嘗試創(chuàng)建一個只有兩個特征的輸入層, 只有一層,3個神經元的隱藏層,以及最后的輸出層。 由于我們要做的是二分類,所以輸出層只有一個神經元。

前向傳播算法

好了現(xiàn)在我們可以來看看前向傳播了,如果對前向傳播還不太了解的話,請復習一下深度學習的基礎概念~ 這里只做簡單的介紹。 首先在輸入層我們有兩個特征輸入就是x1和x2,他們都會傳遞給隱藏層的3個神經元中進行訓練。

每一個神經元都是輸入層取值的加權和,就像圖出計算的一樣,分別計算出a11,a12和a13. 同樣的輸出層的計算是上一層的每一個神經元的取值的加權和,也正如上圖計算的一樣。這就是整個的前向傳播算法,上一層的計算結果是下一層的輸入,以此類推。對數(shù)學比較熟悉的同學一定猜到了,權重(w)的計算過程就是一個矩陣乘法。 首先是由x1和x2組成1*2的矩陣, 以及隱藏層的每一個神經元上對應的權重(w) 組合的2*3的矩陣(2個輸入特征的w,3個神經元),他們兩個做矩陣乘法就是這一層的前向傳播算法,結果是一個1*3的矩陣。再接著跟輸出層的3*1的矩陣(3個輸入特征的w和1個神經元)繼續(xù)做矩陣乘法。就是最后的結果。 很幸運的是tf為我們實現(xiàn)了做矩陣乘法的函數(shù)就是matmul。 那么上面這個前向傳播的過程就是如下的代碼:

a = tf.nn.relu(tf.matmul(x,w1) + b1)

y = tf.matmul(a, w2) + b2

我們在早期的帖子中說過神經網(wǎng)絡的每一層都有一個激活函數(shù),我們分類問題的時候都會加入激活函數(shù)來增加非線性效果。那么上面可以看到我們使用tf.nn.relu這個tf為我們實現(xiàn)好的激活函數(shù)來給我們的隱藏層前向傳播算法增加非線性。 輸出層y沒有用到激活函數(shù),我們之后會說明。

損失函數(shù)

我們需要一個損失函數(shù)來計算我們預測的結果與真實值的差距。 tf為我們實現(xiàn)了眾多的損失函數(shù)。由于這我們要做二分類問題,那么我們就需要sigmoid作為激活函數(shù),所以我們也要使用tf為sigmoid實現(xiàn)的損失函數(shù)。

cost = tf.nn.sigmoid_cross_entropy_with_logits(logits=y, labels=y_, name=None)

sigmoid_cross_entropy_with_logits的第一個參數(shù)是我們的預測值,第二個參數(shù)是真實的值,也就是我們的labels。 剛才我們計算前向傳播的時候再輸出層并沒有使用任何激活函數(shù),是因為我們tf的損失函數(shù)中會給輸出層加入相應的激活函數(shù)。 也就是sigmoid_cross_entropy_with_logits已經給輸出層加入了sigmoid激活函數(shù)了。

反向傳播與梯度下降

為了實現(xiàn)梯度下降算法,我們需要進行反向傳播計算來求得每一個參數(shù)對應損失函數(shù)的導數(shù)。所幸的是tf同樣為我們提供了各種優(yōu)化的反向傳播算法。 這里我們使用專門的梯度下降。如下:

train_op = tf.train.GradientDescentOptimizer(0.01).minimize(cost)

GradientDescentOptimizer是梯度下降的優(yōu)化算法,參數(shù)是學習率,這里我們設置為0.01。 同時優(yōu)化目標是最小化損失函數(shù)。 所以是minimize函數(shù),并且把損失函數(shù)作為參數(shù)傳遞過去。

開始訓練

with tf.Session() as sess:

init = tf.initialize_all_variables()

sess.run(init)

for i in range(100):

sess.run(train_op)

print(sess.run(w1))

print(sess.run(w2))

之前的帖子說過tf是圖計算。 我們之前做的所有的操作都不會產生實際的計算效果。而是在tf中維護一個默認的圖, 當我們顯示的使用tf的session.run的時候才會去計算整個圖中的每一個幾點。 上面我們聲明一個Session,并在一開始初始化所有的變量, 循環(huán)100次代表訓練100輪迭代。 最后輸出訓練處的所有的w。

完整的代碼

import tensorflow as tf

import numpy as np

x = np.arange(4, dtype=np.float32).reshape(2,2) # 使用np來創(chuàng)造兩個樣本

y_ = np.array([0,1], dtype=np.float32).reshape(2,1) # 使用np來創(chuàng)造兩個label

w1 = tf.Variable(tf.random_normal([2,3], stddev=1, seed=1))

w2 = tf.Variable(tf.random_normal([3,1], stddev=1, seed=1))

b1 = tf.Variable(tf.zeros([3]))

b2 = tf.Variable(tf.zeros([1]))

a = tf.nn.relu(tf.matmul(x,w1) + b1)

y = tf.matmul(a, w2) + b2

cost = tf.nn.sigmoid_cross_entropy_with_logits(logits=y, labels=y_, name=None)

train_op = tf.train.GradientDescentOptimizer(0.01).minimize(cost)

with tf.Session() as sess:

init = tf.initialize_all_variables()

sess.run(init)

for i in range(100):

sess.run(train_op)

print(sess.run(w1))

print(sess.run(w2))

以上就是使用tensorflow 構建一個簡單神經網(wǎng)絡的方法.

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 神經網(wǎng)絡

    關注

    42

    文章

    4822

    瀏覽量

    106458
  • tensorflow
    +關注

    關注

    13

    文章

    330

    瀏覽量

    61773
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    TF之CNN:Tensorflow構建卷積神經網(wǎng)絡CNN的嘻嘻哈哈事之詳細攻略

    TF之CNN:Tensorflow構建卷積神經網(wǎng)絡CNN的嘻嘻哈哈事之詳細攻略
    發(fā)表于 12-19 17:03

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

    元,它決定了該輸入向量在地位空間中的位置。SOM神經網(wǎng)絡訓練的目的就是為每個輸出層神經元找到合適的權向量,以達到保持拓撲結構的目的。SOM的訓練過程其實很簡單,就是接收到
    發(fā)表于 07-21 04:30

    簡單神經網(wǎng)絡的實現(xiàn)

    簡單神經網(wǎng)絡
    發(fā)表于 09-11 11:57

    高階API構建模型和數(shù)據(jù)集使用

    、前言前面結合神經網(wǎng)絡簡要介紹TensorFlow相關概念,并給出了MNIST手寫數(shù)字識別的簡單示例,可以得出結論是,構建
    發(fā)表于 11-04 07:49

    【AI學習】第3篇--人工神經網(wǎng)絡

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

    如何移植CNN神經網(wǎng)絡到FPGA中?

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

    如何構建神經網(wǎng)絡?

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

    步學用Tensorflow構建卷積神經網(wǎng)絡

    本文主要和大家分享如何使用Tensorflow從頭開始構建和訓練卷積神經網(wǎng)絡。這樣就可以將這個知識作為
    發(fā)表于 11-16 01:32 ?3784次閱讀
    <b class='flag-5'>一</b>步<b class='flag-5'>一</b>步學用<b class='flag-5'>Tensorflow</b><b class='flag-5'>構建</b>卷積<b class='flag-5'>神經網(wǎng)絡</b>

    TensorFlow寫個簡單神經網(wǎng)絡

    這次就用TensorFlow寫個神經網(wǎng)絡,這個神經網(wǎng)絡寫的很簡單,就三種層,輸入層--隱藏層----輸出層;
    的頭像 發(fā)表于 03-23 15:37 ?5455次閱讀
    用<b class='flag-5'>TensorFlow</b>寫個<b class='flag-5'>簡單</b>的<b class='flag-5'>神經網(wǎng)絡</b>

    谷歌正式發(fā)布TensorFlow神經網(wǎng)絡

    日前,我們很高興發(fā)布了 TensorFlow神經網(wǎng)絡 (Graph Neural Networks, GNNs),此庫可以幫助開發(fā)者利用 TensorFlow 輕松處理圖結構化數(shù)據(jù)。
    的頭像 發(fā)表于 01-05 13:44 ?1917次閱讀

    如何構建神經網(wǎng)絡

    神經網(wǎng)絡是模擬人體生物神經元原理構建的,比較基礎的有M-P模型,它按照生物 神經元的結構和工作原理構造出來的
    的頭像 發(fā)表于 02-24 16:06 ?2552次閱讀
    如何<b class='flag-5'>構建</b><b class='flag-5'>神經網(wǎng)絡</b>

    使用TensorFlow進行神經網(wǎng)絡模型更新

    使用TensorFlow進行神經網(wǎng)絡模型的更新是涉及多個步驟的過程,包括模型定義、訓練、評估以及根據(jù)新數(shù)據(jù)或需求進行模型微調(Fine-tuning)或重新訓練。下面我將詳細闡述這
    的頭像 發(fā)表于 07-12 11:51 ?1221次閱讀

    如何構建多層神經網(wǎng)絡

    構建多層神經網(wǎng)絡(MLP, Multi-Layer Perceptron)模型是在機器學習和深度學習領域廣泛使用的技術,尤其在處理分類和回歸問題時。在本文中,我們將深入探討如何從頭
    的頭像 發(fā)表于 07-19 17:19 ?1909次閱讀

    如何使用Python構建LSTM神經網(wǎng)絡模型

    構建LSTM(長短期記憶)神經網(wǎng)絡模型是涉及多個步驟的過程。以下是使用Python和Ke
    的頭像 發(fā)表于 11-13 10:10 ?2076次閱讀

    深度學習入門:簡單神經網(wǎng)絡構建與實現(xiàn)

    深度學習中,神經網(wǎng)絡是核心模型。今天我們用 Python 和 NumPy 構建簡單神經網(wǎng)絡
    的頭像 發(fā)表于 01-23 13:52 ?754次閱讀