① 如何用 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怎樣入門,怎樣快速學習
【完整版,10章】Google老師親授 TensorFlow2.0 入門到進階網路網盤免費資源在線學習
鏈接: https://pan..com/s/12Cr6aOXQndO6jAzf-sIp9A
【完整版,10章】Google老師親授 TensorFlow2.0 入門到進階 課程目錄2.png 課程目錄1.png 第9章 Tensorflow模型保存與部署.rar 第8章 Tensorflow分布式.rar 第7章 循環神經網路.rar 第6章 卷積神經網路.rar 第5章 Tensorflow Estimator使用與tf1.0.rar 第4章 Tensorflow dataset使用.rar 第3章 Tensorflow基礎API使用.rar 第2章 Tensorflow keras實戰.rar 第1章 Tensorflow簡介與環境搭建.rar 第10章 機器翻譯.rar 000.課程代碼.rar
③ 如何從零使用 Keras + TensorFlow 開發一個復雜深度學習模型
Keras 是提供一些高可用的 Python API ,能幫助你快速的構建和訓練自己的深度學習模型,它的後端是 TensorFlow 或者版 Theano 。本文假設權你已經熟悉了 TensorFlow 和卷積神經網路,如果,你還沒有熟悉,那麼可以先看看這個10分鍾入門 TensorFlow 教程和卷積神經網路教程,然後再回來閱讀這個文章。
在這個教程中,我們將學習以下幾個方面:
為什麼選擇 Keras?為什麼 Keras 被認為是深度學習的未來?
在Ubuntu上面一步一步安裝Keras。
Keras TensorFlow教程:Keras基礎知識。
了解 Keras 序列模型
4.1 實際例子講解線性回歸問題
使用 Keras 保存和回復預訓練的模型
Keras API
6.1 使用Keras API開發VGG卷積神經網路
6.2 使用Keras API構建並運行SqueezeNet卷積神經網路。
④ 普通電腦PC怎樣跑TensorFlow的GPU模式
首先需要看你的PC配置是否夠,TF的GPU模式只支持N卡,然後計算能力高於3.0,具體可以查:https://developer.nvidia.com/cuda-gpus
安裝教程可以參考:http://haiy.github.io/2016/07/17/ubuntu16.04%E4%B8%8AGTX1080%E7%9A%84CUDA%E5%AE%89%E8%A3%85.html
http://blog.csdn.net/zhaoyu106/article/details/52793183
Ubuntu16.04上gtx1080的cuda安裝
July 17 2016
目前tensorflow是一個非常流行的深度學習計算框架,常規硬體及系統的安裝方法官方的doc已經說的很清楚了,但是 因為系統是ubuntu16.04,顯卡是GTX1080,所以不可避免的要折騰起來。在上一篇已經在16.04上安裝好了驅動。接下來其實 重點安裝的是CUDA和cuDNN.
首先說為什麼要安裝CUDA和cuDNN,關於採用GPU計算比CPU有速度有多少提升的benchmark找找就有,這次重點是怎麼讓tensorflow充分用的 上GTX1080能力。具體的就是如何把支持GTX1080的CUDA和cuDNN裝起來,然後讓tensorflow認識我們新裝的CUDA和cuDNN。
首先總體說下安裝步驟:
1 首先要注冊NVIDIA developer的帳號,分別下載CUDA和cuDNN
2 確認准備gcc版本,安裝依賴庫sudo apt-get install freegl
3 安裝CUDA
4 解壓cuDNN
5 clone tensorflow源碼,configure配置
6 編譯安裝
7 最後一哆嗦,測試!
准備工作
在正式開始前,猜核尺需要做幾個准備工作,主要是大概先看下文檔
cuda FAQ
tensorflow 的安裝文檔
cuda-gpu的支持列表/計算能力/FAQ
cudnn 5.1有多牛
cuda tookit下載頁面
CUDA_Installation_Guide_linux.pdf
cudnn User Guide
文檔看過之後接下來就是實際動手的過程:
1 注冊NVIDIA developer的帳號,分別下載CUDA和cuDNN
1.1 下載CUDA 打開cuda toolkit下載頁面,GTX1080 要用的是CUDA 8。先點擊JOIN,注冊帳號。 完了後,再回到cuda toolkit下載頁面。選擇 linux, x86-64, ubuntu, 16.04, runfile(local)
1.2 下載cuDNN 進入cudnn的下載頁,一堆調查,日誌寫時下載的是[Download cuDNN v5 (May 27, 2016), for CUDA 8.0 RC],點開選linux,不出意外的話這個就是下載地址.
2 確認GCC版本,安裝依賴庫
確認本機穗高gcc版本,16.04默認的是gcc 5,這里安裝需要的最高是gcc 4.9。接下來就氏答安裝配置gcc 4.9.
2.1 安裝gcc 4.9,並修改系統默認為4.9
sudo apt-get install gcc-4.9 gcc-4.9 g++-4.9 g++-4.9
gcc --version
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.9 10
sudo update-alternatives --install /usr/bin/cc cc /usr/bin/gcc 30
sudo update-alternatives --set cc /usr/bin/gcc
sudo update-alternatives --install /usr/bin/c++ c++ /usr/bin/g++ 30
sudo update-alternatives --set c++ /usr/bin/g++
gcc --version
2.2 一個小依賴
sudo apt-get install freegl
3 安裝CUDA
需要注意的是這個地方有個選擇安裝低版本驅動的地方,選n 大致的安裝流程如下:
3.1 安裝CUDA
chmod +x /cuda_8.0.27_linux.run
./cuda_8.0.27_linux.run
....
Do you accept the previously read EULA?
accept/decline/quit: accept
Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 361.62?
(y)es/(n)o/(q)uit: n
Install the CUDA 8.0 Toolkit?
(y)es/(n)o/(q)uit: y
Enter Toolkit Location
[ default is /usr/local/cuda-8.0 ]:
Do you want to install a symbolic link at /usr/local/cuda?
(y)es/(n)o/(q)uit: y
Install the CUDA 8.0 Samples?
(y)es/(n)o/(q)uit: y
Enter CUDA Samples Location
[ default is /home/h ]: /home/h/Documents/cuda_samples
....
3.2 寫入環境變數
vim ~/.bashrc
#添加下面變數
export PATH=/usr/local/cuda-8.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
3.3 安裝好後簡單驗證
a. 進入剛配置時指定的cuda sample所在文件夾,NVIDIA_CUDA-8.0_Samples/
b. cd 0_Simple/asyncAPI;sudo make
c. NVIDIA_CUDA-8.0_Samples/0_Simple/asyncAPI$ ./asyncAPI [./asyncAPI] - Starting… GPU Device 0: 「GeForce GTX 1080」 with compute capability 6.1 CUDA device [GeForce GTX 1080] time spent executing by the GPU: 10.94 time spent by CPU in CUDA calls: 0.19 CPU executed 50591 iterations while waiting for GPU to finish
4 安裝cuDNN
h@h:~/Downloads$ tar xvzf cudnn-8.0-linux-x64-v5.0-ga.tgz
cuda/include/cudnn.h
cuda/lib64/libcudnn.so
cuda/lib64/libcudnn.so.5
cuda/lib64/libcudnn.so.5.0.5
cuda/lib64/libcudnn_static.a
h@h:~/Downloads$ sudo cp -R cuda/lib64 /usr/local/cuda/lib64
h@h:~/Downloads$ sudo mkdir -p /usr/local/cuda/include
h@h:~/Downloads/cuda$ sudo cp include/cudnn.h /usr/local/cuda/include/
sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*
5 clone, configure tensorflow
5.1 clone源碼
$ git clone https://github.com/tensorflow/tensorflow
5.2 configure配置
整個配置流程應該跟下面的基本一樣的
h@h:~/Downloads/tensorflow$ cd ./tensorflow/
h@h:~/Downloads/tensorflow$ ./configure
Please specify the location of python. [Default is /usr/bin/python]:
***Do you wish to build TensorFlow with Google Cloud Platform support? [y/N] N***
No Google Cloud Platform support will be enabled for TensorFlow
***Do you wish to build TensorFlow with GPU support? [y/N] y***
GPU support will be enabled for TensorFlow
Please specify which gcc nvcc should use as the host compiler. [Default is /usr/bin/gcc]:
**Please specify the location where CUDA toolkit is installed. Refer to README.md for more details. [Default is /usr/local/cuda]: /usr/local/cuda-8.0 **
**Please specify the Cudnn version you want to use. [Leave empty to use system default]: 5.0.5**
**Please specify the location where cuDNN 5.0.5 library is installed. Refer to README.md for more details. [Default is /usr/local/cuda-8.0]: /usr/local/cuda**
Please specify a list of comma-separated Cuda compute capabilities you want to build with.
You can find the compute capability of your device at: https://developer.nvidia.com/cuda-gpus.
**Please note that each additional compute capability significantly increases your build time and binary size.
[Default is: "3.5,5.2"]: 6.1**
Setting up Cuda include
Setting up Cuda lib64
Setting up Cuda bin
Setting up Cuda nvvm
Setting up CUPTI include
Setting up CUPTI lib64
Configuration finished
6 編譯安裝
6.1 編譯工具Bazel安裝配置
先看一眼文檔然後就執行下面的流程:
#安裝java 1.8
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java8-installer
#安裝好後車參考下
java -version
#添加源
echo "deb [arch=amd64] http://storage.googleapis.com/bazel-apt stable jdk1.8" | sudo tee /etc/apt/sources.list.d/bazel.list
curl https://storage.googleapis.com/bazel-apt/doc/apt-key.pub.gpg | sudo apt-key add -
#下載
sudo apt-get update && sudo apt-get install bazel
#升級
sudo apt-get upgrade bazel
6.2 編譯tensorflow的pip版本並安裝
$ bazel build -c opt //tensorflow/tools/pip_package:build_pip_package
# To build with GPU support:
$ bazel build -c opt --config=cuda //tensorflow/tools/pip_package:build_pip_package
$ bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg
# The name of the .whl file will depend on your platform.
#注意編譯完成後生成的文件名字和官方doc裡面的是不一定一致的
$ sudo pip install /tmp/tensorflow_pkg/tensorflow-0.*-linux_x86_64.whl
i6700k 32g編譯時間:
只編譯代碼不帶pip INFO: Elapsed time: 967.271s, Critical Path: 538.38s
bazel-bin/tensorflow/tools/pip_package/build_pip_package INFO: Elapsed time: 65.183s, Critical Path: 48.58
7 最後測試
前面都整完了,現在該測試了,注意前面有兩個動態鏈接庫的位置,cuDNN在/usr/local/cuda/lib64, 而cuda在/usr/local/cuda-8.0/lib64,所以這個時候的bashrc應該這么寫:
export PATH=/usr/local/cuda-8.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:/usr/local/cuda-8.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
寫完後,
source ~/.bashrc
cd tensorflow/tensorflow/models/image/mnist
python convolutional.py
成功的話會出現流暢的跑動:
h@h:~/Downloads/tensorflow/tensorflow/models/image/mnist$ python convolutional.py
I tensorflow/stream_executor/dso_loader.cc:108] successfully opened CUDA library libcublas.so locally
I tensorflow/stream_executor/dso_loader.cc:108] successfully opened CUDA library libcudnn.so.5.0.5 locally
I tensorflow/stream_executor/dso_loader.cc:108] successfully opened CUDA library libcufft.so locally
I tensorflow/stream_executor/dso_loader.cc:108] successfully opened CUDA library libcuda.so.1 locally
I tensorflow/stream_executor/dso_loader.cc:108] successfully opened CUDA library libcurand.so locally
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
I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:925] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
I tensorflow/core/common_runtime/gpu/gpu_init.cc:102] Found device 0 with properties:
name: GeForce GTX 1080
major: 6 minor: 1 memoryClockRate (GHz) 1.8475
pciBusID 0000:01:00.0
Total memory: 7.92GiB
Free memory: 7.41GiB
I tensorflow/core/common_runtime/gpu/gpu_init.cc:126] DMA: 0
I tensorflow/core/common_runtime/gpu/gpu_init.cc:136] 0: Y
I tensorflow/core/common_runtime/gpu/gpu_device.cc:838] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GTX 1080, pci bus id: 0000:01:00.0)
Initialized!
Step 0 (epoch 0.00), 8.4 ms
Minibatch loss: 12.054, learning rate: 0.010000
Minibatch error: 90.6%
Validation error: 84.6%
......
Minibatch error: 0.0%
Validation error: 0.7%
Step 8500 (epoch 9.89), 4.7 ms
Minibatch loss: 1.601, learning rate: 0.006302
Minibatch error: 0.0%
Validation error: 0.9%
Test error: 0.8%