導航:首頁 > 網路設置 > tensorflow神經網路多個輸入設置

tensorflow神經網路多個輸入設置

發布時間:2022-10-01 00:34:03

如何用Tensorflow 快速搭建神經網路

在MNIST數據集上,搭建一個簡單神經網路結構,一個包含ReLU單元的非線性化處理的兩層神經網路。在訓練神經網路的時候,使用帶指數衰減的學習率設置、使用正則化來避免過擬合、使用滑動平均模型來使得最終的模型更加健壯。
程序將計算神經網路前向傳播的部分單獨定義一個函數inference,訓練部分定義一個train函數,再定義一個主函數main。

二、分析與改進設計
1. 程序分析改進
第一,計算前向傳播的函數inference中需要將所有的變數以參數的形式傳入函數,當神經網路結構變得更加復雜、參數更多的時候,程序的可讀性將變得非常差。
第二,在程序退出時,訓練好的模型就無法再利用,且大型神經網路的訓練時間都比較長,在訓練過程中需要每隔一段時間保存一次模型訓練的中間結果,這樣如果在訓練過程中程序死機,死機前的最新的模型參數仍能保留,杜絕了時間和資源的浪費。
第三,將訓練和測試分成兩個獨立的程序,將訓練和測試都會用到的前向傳播的過程抽象成單獨的庫函數。這樣就保證了在訓練和預測兩個過程中所調用的前向傳播計算程序是一致的。
2. 改進後程序設計
mnist_inference.py
該文件中定義了神經網路的前向傳播過程,其中的多次用到的weights定義過程又單獨定義成函數。
通過tf.get_variable函數來獲取變數,在神經網路訓練時創建這些變數,在測試時會通過保存的模型載入這些變數的取值,而且可以在變數載入時將滑動平均值重命名。所以可以直接通過同樣的名字在訓練時使用變數自身,在測試時使用變數的滑動平均值。
mnist_train.py
該程序給出了神經網路的完整訓練過程。
mnist_eval.py
在滑動平均模型上做測試。
通過tf.train.get_checkpoint_state(mnist_train.MODEL_SAVE_PATH)獲取最新模型的文件名,實際是獲取checkpoint文件的所有內容。

㈡ R語言做神經網路,多個輸入多個輸出的命令怎麼

net=newff(minmax(p),[3,5,4],{'tansig','purelin','logsig'},'trainlm');
net.trainParam.goal= 0.00001;
net.trainParam.epochs= 10000;
net= train(net,p,t);
Y=sim(net,p);
隱含層數通常取輸入層數的1.2~1.5倍,但隱含層數增加相對訓練效果會好些。
輸出結果是根據你的T決定的,你這個如果訓練效果好的話輸出值的和就為1。

㈢ 神經網路輸入的每一組離散點的離散點個數都不一致,神經網路怎麼設置

以可能達到的最多離散點的個數為准,其他樣本中長度不足的補零

㈣ 運用matlab解決bp神經網路多個輸入一個輸出的問題

就是一個bp網路啊

㈤ 用MATLAB進行人工神經網路建模,有多個輸入因素的情況下,如何分析哪個因素對輸出的

你說的是主成分分析吧,主成分分析建議使用spss軟體,裡面有很直接的主成分分析演算法,不需要編程,直接使用就可以了,或者你確實需要使用matlab來做的話,請使用princomp函數,這個函數用來進行主成分分析,具體調用格式你可以doc princomp看看,有很詳細的例子,祝好。

㈥ tensorflow 中的3DCNN的,其輸入怎麼組織.就是怎麼創建圖像cube

基本使用

使用 TensorFlow, 你必須明白 TensorFlow:

使用圖 (graph) 來表示計算任務.
在被稱之為 會話 (Session) 的上下文 (context) 中執行圖.
使用 tensor 表示數據.
通過 變數 (Variable) 維護狀態.
使用 feed 和 fetch 可以為任意的操作(arbitrary operation) 賦值或者從其中獲取數據.

綜述

TensorFlow 是一個編程系統, 使用圖來表示計算任務. 圖中的節點被稱之為 op
(operation 的縮寫). 一個 op 獲得 0 個或多個 Tensor, 執行計算,
產生 0 個或多個 Tensor. 每個 Tensor 是一個類型化的多維數組.
例如, 你可以將一小組圖像集表示為一個四維浮點數數組,
這四個維度分別是 [batch, height, width, channels].

一個 TensorFlow 圖描述了計算的過程. 為了進行計算, 圖必須在 會話 里被啟動.
會話 將圖的 op 分發到諸如 CPU 或 GPU 之類的 設備 上, 同時提供執行 op 的方法.
這些方法執行後, 將產生的 tensor 返回. 在 Python 語言中, 返回的 tensor 是
numpy ndarray 對象; 在 C 和 C++ 語言中, 返回的 tensor 是
tensorflow::Tensor 實例.

計算圖

TensorFlow 程序通常被組織成一個構建階段和一個執行階段. 在構建階段, op 的執行步驟
被描述成一個圖. 在執行階段, 使用會話執行執行圖中的 op.

例如, 通常在構建階段創建一個圖來表示和訓練神經網路, 然後在執行階段反復執行圖中的訓練 op.

TensorFlow 支持 C, C++, Python 編程語言. 目前, TensorFlow 的 Python 庫更加易用,
它提供了大量的輔助函數來簡化構建圖的工作, 這些函數尚未被 C 和 C++ 庫支持.

三種語言的會話庫 (session libraries) 是一致的.

構建圖

構建圖的第一步, 是創建源 op (source op). 源 op 不需要任何輸入, 例如 常量 (Constant). 源 op 的輸出被傳遞給其它 op 做運算.

Python 庫中, op 構造器的返回值代表被構造出的 op 的輸出, 這些返回值可以傳遞給其它
op 構造器作為輸入.

TensorFlow Python 庫有一個默認圖 (default graph), op 構造器可以為其增加節點. 這個默認圖對
許多程序來說已經足夠用了. 閱讀 Graph 類 文檔
來了解如何管理多個圖.
import tensorflow as tf

# 創建一個常量 op, 產生一個 1x2 矩陣. 這個 op 被作為一個節點
# 加到默認圖中.
#
# 構造器的返回值代表該常量 op 的返回值.
matrix1 = tf.constant([[3., 3.]])

# 創建另外一個常量 op, 產生一個 2x1 矩陣.
matrix2 = tf.constant([[2.],[2.]])

# 創建一個矩陣乘法 matmul op , 把 'matrix1' 和 'matrix2' 作為輸入.
# 返回值 'proct' 代表矩陣乘法的結果.
proct = tf.matmul(matrix1, matrix2)

默認圖現在有三個節點, 兩個 constant() op, 和一個matmul() op. 為了真正進行矩陣相乘運算, 並得到矩陣乘法的
結果, 你必須在會話里啟動這個圖.

在一個會話中啟動圖

構造階段完成後, 才能啟動圖. 啟動圖的第一步是創建一個 Session 對象, 如果無任何創建參數,
會話構造器將啟動默認圖.

欲了解完整的會話 API, 請閱讀Session 類.
# 啟動默認圖.
sess = tf.Session()

# 調用 sess 的 'run()' 方法來執行矩陣乘法 op, 傳入 'proct' 作為該方法的參數.
# 上面提到, 'proct' 代表了矩陣乘法 op 的輸出, 傳入它是向方法表明, 我們希望取回
# 矩陣乘法 op 的輸出.
#
# 整個執行過程是自動化的, 會話負責傳遞 op 所需的全部輸入. op 通常是並發執行的.
#
# 函數調用 'run(proct)' 觸發了圖中三個 op (兩個常量 op 和一個矩陣乘法 op) 的執行.
#
# 返回值 'result' 是一個 numpy `ndarray` 對象.
result = sess.run(proct)
print result
# ==> [[ 12.]]

# 任務完成, 關閉會話.
sess.close()

Session 對象在使用完後需要關閉以釋放資源. 除了顯式調用 close 外, 也可以使用 "with" 代碼塊
來自動完成關閉動作.
with tf.Session() as sess:
result = sess.run([proct])
print result

在實現上, TensorFlow 將圖形定義轉換成分布式執行的操作, 以充分利用可用的計算資源(如 CPU
或 GPU). 一般你不需要顯式指定使用 CPU 還是 GPU, TensorFlow 能自動檢測. 如果檢測到 GPU, TensorFlow
會盡可能地利用找到的第一個 GPU 來執行操作.

如果機器上有超過一個可用的 GPU, 除第一個外的其它 GPU 默認是不參與計算的. 為了讓 TensorFlow
使用這些 GPU, 你必須將 op 明確指派給它們執行. withDevice 語句用來指派特定的 CPU 或 GPU
執行操作:
with tf.Session() as sess:
with tf.device("/gpu:1"):
matrix1 = tf.constant([[3., 3.]])
matrix2 = tf.constant([[2.],[2.]])
proct = tf.matmul(matrix1, matrix2)

設備用字元串進行標識. 目前支持的設備包括:

"/cpu:0": 機器的 CPU.
"/gpu:0": 機器的第一個 GPU, 如果有的話.
"/gpu:1": 機器的第二個 GPU, 以此類推.

閱讀使用GPU章節, 了解 TensorFlow GPU 使用的更多信息.

互動式使用

文檔中的 Python 示例使用一個會話 Session 來
啟動圖, 並調用 Session.run() 方法執行操作.

為了便於使用諸如 IPython 之類的 Python 交互環境, 可以使用
InteractiveSession 代替
Session 類, 使用 Tensor.eval()
和 Operation.run() 方法代替
Session.run(). 這樣可以避免使用一個變數來持有會話.
# 進入一個互動式 TensorFlow 會話.
import tensorflow as tf
sess = tf.InteractiveSession()

x = tf.Variable([1.0, 2.0])
a = tf.constant([3.0, 3.0])

# 使用初始化器 initializer op 的 run() 方法初始化 'x'
x.initializer.run()

# 增加一個減法 sub op, 從 'x' 減去 'a'. 運行減法 op, 輸出結果
sub = tf.sub(x, a)
print sub.eval()
# ==> [-2. -1.]

Tensor

TensorFlow 程序使用 tensor 數據結構來代表所有的數據, 計算圖中, 操作間傳遞的數據都是 tensor.
你可以把 TensorFlow tensor 看作是一個 n 維的數組或列表. 一個 tensor 包含一個靜態類型 rank, 和
一個 shape. 想了解 TensorFlow 是如何處理這些概念的, 參見
Rank, Shape, 和 Type.

變數

Variables for more details.
變數維護圖執行過程中的狀態信息. 下面的例子演示了如何使用變數實現一個簡單的計數器. 參見
變數 章節了解更多細節.
# 創建一個變數, 初始化為標量 0.
state = tf.Variable(0, name="counter")

# 創建一個 op, 其作用是使 state 增加 1

one = tf.constant(1)
new_value = tf.add(state, one)
update = tf.assign(state, new_value)

# 啟動圖後, 變數必須先經過`初始化` (init) op 初始化,
# 首先必須增加一個`初始化` op 到圖中.
init_op = tf.initialize_all_variables()

# 啟動圖, 運行 op
with tf.Session() as sess:
# 運行 'init' op
sess.run(init_op)
# 列印 'state' 的初始值
print sess.run(state)
# 運行 op, 更新 'state', 並列印 'state'
for _ in range(3):
sess.run(update)
print sess.run(state)

# 輸出:

# 0
# 1
# 2
# 3

代碼中 assign() 操作是圖所描繪的表達式的一部分, 正如 add() 操作一樣. 所以在調用 run()
執行表達式之前, 它並不會真正執行賦值操作.

通常會將一個統計模型中的參數表示為一組變數. 例如, 你可以將一個神經網路的權重作為某個變數存儲在一個 tensor 中.
在訓練過程中, 通過重復運行訓練圖, 更新這個 tensor.

Fetch

為了取回操作的輸出內容, 可以在使用 Session 對象的 run() 調用 執行圖時, 傳入一些 tensor,
這些 tensor 會幫助你取回結果. 在之前的例子里, 我們只取回了單個節點 state, 但是你也可以取回多個
tensor:
input1 = tf.constant(3.0)
input2 = tf.constant(2.0)
input3 = tf.constant(5.0)
intermed = tf.add(input2, input3)
mul = tf.mul(input1, intermed)

with tf.Session() as sess:
result = sess.run([mul, intermed])
print result

# 輸出:
# [array([ 21.], dtype=float32), array([ 7.], dtype=float32)]

需要獲取的多個 tensor 值,在 op 的一次運行中一起獲得(而不是逐個去獲取 tensor)。

Feed

上述示例在計算圖中引入了 tensor, 以常量或變數的形式存儲. TensorFlow 還提供了 feed 機制, 該機制
可以臨時替代圖中的任意操作中的 tensor 可以對圖中任何操作提交補丁, 直接插入一個 tensor.

feed 使用一個 tensor 值臨時替換一個操作的輸出結果. 你可以提供 feed 數據作為 run() 調用的參數.
feed 只在調用它的方法內有效, 方法結束, feed 就會消失. 最常見的用例是將某些特殊的操作指定為 "feed" 操作,
標記的方法是使用 tf.placeholder() 為這些操作創建佔位符.

input1 = tf.placeholder(tf.float32)
input2 = tf.placeholder(tf.float32)
output = tf.mul(input1, input2)

with tf.Session() as sess:
print sess.run([output], feed_dict={input1:[7.], input2:[2.]})

# 輸出:
# [array([ 14.], dtype=float32)]

for a larger-scale example of feeds.
如果沒有正確提供 feed, placeholder() 操作將會產生錯誤.
MNIST 全連通 feed 教程
(source code)
給出了一個更大規模的使用 feed 的例子.

㈦ 輕松體驗TensorFlow 第一個神經網路:基本分類(Part 1)

關於 Jupyter Notebook 的使用,可以參考如下鏈接,有詳細的步驟和截圖:

Jupyter Notebook神器-免費體驗來自微軟的Azure Notebook

基於Jupyter Notebook 快速體驗Python和plot()繪圖方法

基於Jupyter Notebook 快速體驗matplotlib.pyplot模塊中繪圖方法

TensorFlow 基本分類(basic classification)演示的完整代碼,可以訪問:

上述命令運行時間較長,請耐心等待。

pip list 命令用來查看當前環境下的Python 包,grep 命令用來查找和篩選。中間的豎線表示 pipe(管道),將pip list 命令的輸出作為 grep 命令的輸入。

pip 前面的感嘆號是cell 中運行 Linux 命令的方式,在命令行中運行則不需要加感嘆號。

上述命令的輸出,表示當前環境已經安裝好了 TensorFlow 包。如果沒有安裝,可以通過如下命令安裝:

安裝TensorFlow命令,說明如下:

本地安裝TensorFlow,截圖如下。

TensorFlow 安裝完成:

下面訓練了一個神經網路模型,來對服裝圖像進行分類,例如運動鞋和襯衫。需要使用tf.keras,這是一個用於在TensorFlow 中構建和訓練模型的高級API。

下面使用Fashion MNIST 數據集,其中包含了10個類別中共70,000張灰度圖像。圖像包含了低解析度(28 x 28像素)的單個服裝物品,圖片鏈接如下所示:

Fashion-MNIST是一個替代MNIST手寫數字集的圖像數據集。 它是由Zalando(一家德國的 時尚 科技 公司)旗下的研究部門提供。其涵蓋了來自10種類別的共7萬個不同商品的正面圖片。Fashion-MNIST的大小、格式和訓練集/測試集劃分與原始的MNIST完全一致。60000/10000的訓練測試數據劃分,28x28的灰度圖片。可以直接用它來測試你的機器學習和深度學習演算法性能,且不需要改動任何的代碼。

MNIST是 Mixed National Institute of Standards and Technology database 的簡寫。

下面使用60,000張圖像來訓練網路和10,000張圖像來評估網路模型學習圖像分類任務的准確程度。

可以直接從TensorFlow 使用Fashion MNIST,只需導入並載入數據。

載入數據集並返回四個NumPy數組:

圖像是28x28 NumPy數組,像素值介於0到255之間。labels是一個整數數組,數值介於0到9之間。

下面是圖像類別和標簽的對應關系:

每個圖像都映射到一個標簽。由於類別名稱不包含在數據集中,因此把他們存儲在這里以便在繪制圖像時使用:

以下顯示訓練集中有60,000個圖像,每個圖像表示為28 x 28像素:

訓練集中有 60000個標簽,並且每個標簽都是0-9 之間的整數。

測試集和訓練集類似,有10000個圖像和對應的10000個圖像標簽。

在訓練網路之前必須對數據進行預處理。 如果檢查訓練集中的第一個圖像,將看到像素值落在0到255的范圍內:

代碼說明:

plt.figure() 創建一個新的figure。

plt.colorbar() 方法用來顯示當前image 的顏色方案。

在發送到神經網路模型之前,我們將這些值縮放到0到1的范圍(歸一化處理)。為此,我們將像素值值除以255。重要的是,對訓練集和測試集要以相同的方式進行預處理:

顯示訓練集中的前25個圖像,並在每個圖像下方顯示類別名。驗證數據格式是否正確,我們是否已准備好構建和訓練網路。

代碼說明:

plt.xticks([])和plt.yticks([]) - 以空list 作為xticks() 方法的參數,查看數據集中圖像隱藏坐標軸。

plt.xlabel() 方法可以在 x 軸的下方顯示指定文本。

plt.subplot(5,5,1) 方法 - 表示5行5列共25個位置,最後一個參數1 表示Axes的位置,第一行的位置編號為:1-5,第二行的位置編號為:6-10,依此類推。

上述代碼遍歷了25 個位置(for i in range(25)),批量顯示多張圖。針對每一個位置,設置隱藏x和y軸,不顯示網關線(grid),在對應的位置顯示圖像以及類別(label)。

需要注意的地方:Axes 位置的起始值是1,不是常見的0。

對TensorFlow 深度學習有興趣的同學,可以訪問如下鏈接。

㈧ tensorflow 神經網路

輸入層就是你的輸入向量的維度;訓練次數一般試試幾次就知道了,可以先選擇1000次,看最終的訓練到沒到目標誤差。然後視情況多少進行訓練次數的增減。

㈨ TensorFlow如何入門

1. TensorFlow是什麼

是一個深度學習庫,由 Google 開源,可以對定義在 Tensor(張量)上的函數自動求導。

Tensor(張量)意味著 N 維數組,Flow(流)意味著基於數據流圖的計算,TensorFlow即為張量從圖的一端流動到另一端。

它的一大亮點是支持異構設備分布式計算,它能夠在各個平台上自動運行模型,從電話、單個CPU / GPU到成百上千GPU卡組成的分布式系統。

支持CNN、RNN和LSTM演算法,是目前在 Image,NLP 最流行的深度神經網路模型。

2. 為什麼需要TensorFlow等庫

深度學習通常意味著建立具有很多層的大規模的神經網路。

除了輸入X,函數還使用一系列參數,其中包括標量值、向量以及最昂貴的矩陣和高階張量。

在訓練網路之前,需要定義一個代價函數,常見的代價函數包括回歸問題的方差以及分類時候的交叉熵。

訓練時,需要連續的將多批新輸入投入網路,對所有的參數求導後,代入代價函數,從而更新整個網路模型。

這個過程中有兩個主要的問題:1. 較大的數字或者張量在一起相乘百萬次的處理,使得整個模型代價非常大。2. 手動求導耗時非常久。

所以TensorFlow的對函數自動求導以及分布式計算,可以幫我們節省很多時間來訓練模型。

3. TensorFlow的優點

第一,基於Python,寫的很快並且具有可讀性。

第二,在多GPU系統上的運行更為順暢。

第三,代碼編譯效率較高。

第四,社區發展的非常迅速並且活躍。

第五,能夠生成顯示網路拓撲結構和性能的可視化圖。

4. TensorFlow的工作原理

TensorFlow是用數據流圖(data flow graphs)技術來進行數值計算的。

數據流圖是描述有向圖中的數值計算過程。

有向圖中,節點通常代表數學運算,邊表示節點之間的某種聯系,它負責傳輸多維數據(Tensors)。
節點可以被分配到多個計算設備上,可以非同步和並行地執行操作。因為是有向圖,所以只有等到之前的入度節點們的計算狀態完成後,當前節點才能執行操作。

閱讀全文

與tensorflow神經網路多個輸入設置相關的資料

熱點內容
光纖盒沒有網路光信號紅燈 瀏覽:483
電腦共享顯示正在還原網路連接是什麼原因 瀏覽:928
台式電腦無線網路40kb 瀏覽:247
學校ip網路中心軟體批發 瀏覽:397
華為5g網路什麼意思 瀏覽:40
網路安全法第四十四條案例 瀏覽:924
網路操作台在哪裡 瀏覽:814
修改手機界面網路運營商的軟體 瀏覽:938
家裡網路密碼在哪找 瀏覽:84
如何分辨是哪家的網路 瀏覽:269
網路快慢和手機的什麼有關 瀏覽:10
播放網路安全為民手抄報 瀏覽:982
怎麼確定哪個位置網路信號好 瀏覽:909
專業網路維護多少錢 瀏覽:677
蘋果網路怎麼設置成lte 瀏覽:565
oppo手機為什麼網路好卡 瀏覽:265
網路清網文明共享 瀏覽:473
查無線網路的服務電話 瀏覽:68
家裡的網路卡怎麼選路由器 瀏覽:549
網路檢測總顯示密碼錯誤 瀏覽:962

友情鏈接