⑴ ubuntu上tensorflow怎麼編程
啟用GPU支持:
需要設置LD_LIBRARY_PATH 和 CUDA_HOME環境變數。
假定CUDA安裝目錄為usr/local/cuda,將下面兩個命令添加到~/.bash_profile文件中: export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda/lib64"
export CUDA_HOME=/usr/local/cuda
訓練自己的第一個TensorFlow神經網路:
從源代碼的根路徑執行:
$cd tensorflow/models/image/mnist
$python convolutional.py
Succesfully downloaded train-images-idx3-ubyte.gz 9912422 bytes.
Succesfully downloaded train-labels-idx1-ubyte.gz 28881 bytes.
Succesfully downloaded t10k-images-idx3-ubyte.gz 1648877 bytes.
Succesfully downloaded t10k-labels-idx1-ubyte.gz 4542 bytes.
Extracting data/train-images-idx3-ubyte.gz
Extracting data/train-labels-idx1-ubyte.gz
Extracting data/t10k-images-idx3-ubyte.gz
Extracting data/t10k-labels-idx1-ubyte.gz
...........
...........
能正常運行說明安裝成功
⑵ 如何使用TensorFlow構建,訓練和改進循環神經網路
基本使用使用TensorFlow,你必須明白TensorFlow:使用圖(graph)來表示計算任務.在被稱之為會話(Session)的上下文(context)中執行圖.使用tensor表示數據.通過變數(Variable)維護狀態.使用feed和fetch可以為任意的操作(arbitraryoperation)賦值或者從其中獲取數據.綜述TensorFlow是一個編程系統,使用圖來表示計算任務.圖中的節點被稱之為op(operation的縮寫).一個op獲得0個或多個Tensor,執行計算,產生0個或多個Tensor.每個Tensor是一個類型化的多維數組.例如,你可以將一小組圖像集表示為一個四維浮點數數組,這四個維度分別是[batch,height,width,channels].一個TensorFlow圖描述了計算的過程.為了進行計算,圖必須在會話里被啟動.會話將圖的op分發到諸如CPU或GPU之類的設備上,同時提供執行op的方法.這些方法執行後,將產生的tensor返回.在Python語言中,返回的tensor是numpyndarray對象;在C和C++語言中,返回的tensor是tensorflow::Tensor實例.
⑶ tensorflow怎麼構建深度學習網路
構建路線:對於任何一個深度學習庫,如mxnet、tensorflow、theano、caffe等,基本上都採用同樣的一個學習流程,大體流程如下:
(1)訓練階段:數據打包-》網路構建、訓練-》模型保存-》可視化查看損失函數、驗證精度
(2)測試階段:模型載入-》測試圖片讀取-》預測顯示結果
(3)移植階段:量化、壓縮加速-》微調-》C++移植打包-》上線
⑷ 如何用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文件的所有內容。
⑸ 如何使用tensorflow實現卷積神經網路
沒有卷積神經網路的說法,只有卷積核的說法。
電腦圖像處理的真正價值在於:一旦圖像存儲在電腦上,就可以對圖像進行各種有效的處理。如減小像素的顏色值,可以解決曝光過度的問題,模糊的圖像也可以進行銳化處理,清晰的圖像可以使用模糊處理模擬攝像機濾色鏡產生的柔和效果。
用Photoshop等圖像處理,施展的魔法幾乎是無止境的。四種基本圖像處理效果是模糊、銳化、浮雕和水彩。?這些效果是不難實現的,它們的奧妙部分是一個稱為卷積核的小矩陣。這個3*3的核含有九個系數。為了變換圖像中的一個像素,首先用卷積核中心的系數乘以這個像素值,再用卷積核中其它八個系數分別乘以像素周圍的八個像素,最後把這九個乘積相加,結果作為這個像素的值。對圖像中的每個像素都重復這一過程,對圖像進行了過濾。採用不同的卷積核,就可以得到不同的處理效果。?用PhotoshopCS6,可以很方便地對圖像進行處理。
模糊處理——模糊的卷積核由一組系數構成,每個系數都小於1,但它們的和恰好等於1,每個像素都吸收了周圍像素的顏色,每個像素的顏色分散給了它周圍的像素,最後得到的圖像中,一些刺目的邊緣變得柔和。
銳化卷積核中心的系數大於1,周圍八個系數和的絕對值比中間系數小1,這將擴大一個像素與之周圍像素顏色之間的差異,最後得到的圖像比原來的圖像更清晰。
浮雕卷積核中的系數累加和等於零,背景像素的值為零,非背景像素的值為非零值。照片上的圖案好像金屬表面的浮雕一樣,輪廓似乎凸出於其表面。
要進行水彩處理,首先要對圖像中的色彩進行平滑處理,把每個像素的顏色值和它周圍的二十四個相鄰的像素顏色值放在一個表中,然後由小到大排序,把表中間的一個顏色值作為這個像素的顏色值。然後用銳化卷積核對圖像中的每個像素進行處理,以使得輪廓更加突出,最後得到的圖像很像一幅水彩畫。
我們把一些圖像處理技術結合起來使用,就能產生一些不常見的光學效果,例如光暈等等。
希望我能幫助你解疑釋惑。
⑹ 如何基於caffe或tensorflow來建立自己的網路模型
Caffe是目前深度學習比較優秀好用的一個開源庫,采樣c++和CUDA實現,具有速度快,模型定義方便等優點。學習了幾天過後,發現也有一個不方便的地方,就是在我的程序中調用Caffe做圖像分類沒有直接的介面。Caffe的數據層可以從資料庫(支持leveldb...
⑺ 如何用 TensorFlow 實現生成式對抗網路
我們利用 TensorFlow 提供的 tf.train.AdamOptimizer 來控制學習速度。AdamOptimizer 通過使用動量(參數的移動平均數)來改善傳統梯度下降,促進超參數動態調整。我們可以通過創建標簽錯誤率的摘要標量來跟蹤丟失和錯誤率:
# Create a placeholder for the summary statistics
with tf.name_scope("accuracy"):
# Compute the edit (Levenshtein) distance of the top path
distance =tf.edit_distance(tf.cast(self.decoded[0], tf.int32), self.targets)
# Compute the label error rate (accuracy)
self.ler =tf.rece_mean(distance, name='label_error_rate')
self.ler_placeholder =tf.placeholder(dtype=tf.float32, shape=[])
self.train_ler_op =tf.summary.scalar("train_label_error_rate", self.ler_placeholder)
self.dev_ler_op =tf.summary.scalar("validation_label_error_rate", self.ler_placeholder)
self.test_ler_op =tf.summary.scalar("test_label_error_rate", self.ler_placeholder)
如何改進 RNN
現在我們構建了一個簡單的 LSTM RNN 網路,下一個問題是:如何繼續改進它看幸運的是,在開源社區里,很多大公司都開源了自己的最新語音識別模型。在 2016 年 9 月,微軟的論文《The Microsoft 2016 Conversational Speech Recognition System》展示了在 NIST 200 Switchboard 數據中單系統殘差網路錯誤率 6.9% 的新方式。他們在卷積+循環神經網路上使用了幾種不同的聲學和語言模型。微軟的團隊和其他研究人員在過去 4 年中做出的主要改進包括:
在基於字元的 RNN 上使用語言模型
使用卷積神經網路(CNN)從音頻中獲取特徵
使用多個 RNN 模型組合
值得注意的是,在過去幾十年裡傳統語音識別模型獲得的研究成果,在目前的深度學習語音識別模型中仍然扮演著自己的角色。
修改自: A Historical Perspective of Speech Recognition, Xuedong Huang, James Baker, Raj Reddy Communications of the ACM, Vol. 57 No. 1, Pages 94-103, 2014
訓練你的第一個 RNN 模型
在本教程的 Github 里,作者提供了一些介紹以幫助讀者在 TensorFlow 中使用 RNN 和 CTC 損失函數訓練端到端語音識別系統。大部分事例數據來自 LibriVox。數據被分別存放於以下文件夾中:
Train: train-clean-100-wav (5 examples)
Test: test-clean-wav (2 examples)
Dev: dev-clean-wav (2 examples)
當訓練這些示例數據時,你會很快注意到訓練數據的詞錯率(WER)會產生過擬合,而在測試和開發集中詞錯率則有 85% 左右。詞錯率不是 100% 的原因在於每個字母有 29 種可能性(a-z、逗號、空格和空白),神經網路很快就能學會:
某些字元(e,a,空格,r,s,t)比其他的更常見
輔音-母音-輔音是英文的構詞特徵
MFCC 輸入聲音信號振幅特徵的增加只與字母 a-z 有關
⑻ TensorFlow神經網路調優
訓練集73%應該不夠吧(笑)
先進一步擬合數據,讓網路變得更深及更寬,具體可以的話128個節點可以繼續加大,兩層網路可以繼續加深,以及選取更小的學習率(0.01或者1e-4,1太可怕了)
等到可以擬合數據了以後,再調節過擬合的問題,具體來說使用dropout、正則化參數、提前終止等
⑼ tensorflow 如何將兩個網路融合
具體描述一下可以么。。。
比如,數據-〉網路1-〉網路2-〉輸出,同時訓練兩個網路,還是說,兩個網路都是訓練好的,調用一下就好??