希望自己能保持每週至少更新一次代碼的頻率,從這次開始
- 安裝tensorflow、theano和keras的過程
- 試運行代碼的注意事項
安裝tensorflow、theano和keras的過程
全文主要是爲了實現微軟研究院鄭宇的研究而做的努力
說明
- 作者程序用的是2.7版本,下面安裝軟件用的都是3的版本,但思路是一致的
- 2.7版本的話記得更新包
- windows只能是python3.5及以上版本安裝TensorFlow,因此2.7版本建議theano1.2
- 也可以將源代碼修改爲python3的版本
import pickle
for i in range(num):
preprocessing下的ini.py
卸載
之前python3.6我僅安裝32位,須卸載。爲保證卸載完全,先用原安裝包(包括小版本號相同)修復之後再卸載
之前已有Anaconda則也需要卸載乾淨(並清理與python關聯)
Anaconda安裝
- 下載python3.6_64和Anaconda_64;
- 安裝Anaconda_64,配置環境路徑;
- Pip安裝一些包(相當於測試,保證沒有和2.7有衝突);
- 補充java的環境
- Spyder模擬matlab的變量空間
安裝深度學習相關
安裝CUDA和CUDNN(CUDA 8.0 (安裝包和2補丁) & CuDnn 6.0)
驅動精靈保證驅動正確安裝
CUDA安裝包下載:https://developer.nvidia.com/cuda-80-ga2-download-archive
注意版本: All our prebuilt binaries have been built with cuDNN 6. We anticipate releasing TensorFlow 1.4 with cuDNN 7.
若顯示下圖錯誤-根據顯卡計算能力更改(750ti的cc爲5.0)
測試: 先通過VS版本build solution,然後cd C:\ProgramData\NVIDIACorporation\CUDA Samples\v8.0\bin\win64\Release(或debug文件夾)執行裏面的deviceQuery.exe文件
CuDNN安裝包下載:https://developer.nvidia.com/cudnn
- 要註冊Nvidia用戶,並加入CuDNN開發組,填若干問卷就可以下載了.選擇下載版本時要注意和Cuda版本匹配。解壓後覆蓋至CUDA的安裝目錄下
- Cudnn解壓後將bin,include,lib三個文件夾裏面的內容覆蓋至Cuda安裝目錄下,默認路徑爲C:\Program Files\NVIDIA GPUComputing Toolkit\CUDA\v8.0(記住不是替換,是把Cudnn文件裏的.dll文件添加到Cuda裏面)
安裝tensorflow版本(cpu版本,已支持3.6,最好pip);
部分說明要求配置環境,感覺像是內部建立小環境(root環境下的包不能用)-不需要
配置環境操作過程代碼
>>>conda create --name tensorflow python=3.6.3
>>>conda info --envs
>>>activate tensorflow
(運行)
>>>conda list
>>>pip install tensorflow-gpu
>>>conda install keras
>>>deactivate tensorflow
以上是在cmd環境下的配置過程
python測試代碼
# 測試程序一
import tensorflow as tf
hello = tf.constant('Hello,TensorFlow!')
sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
print (sess.run(hello))
a = tf.constant(10)
b = tf.constant(32)
print(sess.run(a + b))
# 測試程序二
import tensorflow as tf
# Creates a graph.
a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[2, 3], name='a')
b = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[3, 2], name='b')
c = tf.matmul(a, b)
# Creates a session with log_device_placement set to True.
sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
# Runs the op.
print (sess.run(c))
安裝tensorflow-gpu版本
需要先裝CUDA和CUDNN,用於GPU加速(同版本,已安裝1.4.0,一定pip)
速度太慢可以考慮其他鏡像源,如清華和阿里雲,生成文件在C:\Users\hp\
版本不太新 / 掛vpn不加鏡像則下的快,但存在代理和版本不適應風險
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
安裝Theano
通過安裝包(python setup.py install),1.0.1是最後更新版本
pip install theano keras
conda install -c mila-udem pygpu
conda install -c conda-forge pygpu
import theano可能出現各種錯誤!!!
# 檢查所有相應的包(儘量用conda裝)
conda install numpy scipy mkl mkl-service libpython m2w64-toolchain
可能存在問題
- 安裝提示所需擴展包
- 提示mkl_intel_thread.dll出錯,則將.\Lib\site-packages\numpy\core\下同名文件拷出替換
- WARNING (theano.tensor.blas): Using NumPy C-API based implementation for BLAS
更換上一個穩定版本(0.9)不報提示,但出現其他錯誤,所以不管 - 檢查blas加速是否成功(FALSE表示成功,未成功)
import numpy
id(numpy.dot) == id(numpy.core.multiarray.dot)
# 配置文件C:\Users\hp\.theanorc.txt
# 添加路徑D:\Anaconda3\Library\mingw-w64\bin
# 測試
import theano.tensor as T
from theano import function
x = T.dscalar('x')
y = T.dscalar('y')
z = x + y
f = function([x, y], z)
f(2, 3)
通過安裝包(python setup.py install)安裝Keras
作者建議安裝1.2版本(我安裝最新2.1.2版本暫未出錯)
按照要求更改配置文件:C:\Users\hp.keras\keras.json(更改爲2.+theano)
[global]
device = cuda0
floatX = float32
cxx=D:\Anaconda3\Library\mingw-w64\bin\g++.exe
compiler_bindir=C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin
[dnn]
enabled = True
include_path=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\include
library_path=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\lib\x64
安裝HDF5和h5py
測試CUDA與cuDNN
測試tenseoflow環境下是否工作正常:
查詢GPU是否支持CUDA:https://developer.nvidia.com/cuda-gpus
原有臺式機若是Intel(R) HD Graphics(集成顯卡,CPU自帶),不被支持
visible gpu device (device: 0, name: GeForce GT 420, pci bus id: 0000:01:00.0) with Cuda compute capability 2.1. The minimum required Cuda capability is 3.0.
第一種判斷(最常見,但我總是無法調出)
第二種修改(依舊無法得到結果)
import os
os.environ['TF_CPP_MIN_LOG_LEVEL']='3'
import tensorflow as tf
sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
第三種實驗(可以證明)
import tensorflow as tf
with tf.device('/gpu:0'):
a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[2, 3], name='a')
b = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[3, 2], name='b')
c = tf.matmul(a, b)
with tf.Session() as sess:
print (sess.run(c))
tf = tf.Session(config=tf.ConfigProto(log_device_placement=True))
tf.list_devices()
測試theano環境下是否工作正常(重要)
- theano-cache purge #清理緩存
- 使用theano_gpu.py測試程序
- 測試keras/examples/
python mnist_cnn.py(下載數據時間較長)
作者源代碼試運行
安裝並下載數據
測試數據集(spyder好用)
import deepst
import h5py
f = h5py.File('C:\\Users\\hp\\Desktop\\zheng\\TestDeep\\DeepST-master\\data\\TaxiBJ\\BJ13_M32x32_T30_InOut.h5')
for ke in f.keys():
print(ke, f[ke].shape)
from deepst.datasets import stat;
stat('C:\\Users\\hp\\Desktop\\zheng\\TestDeep\\DeepST-master\\data\\TaxiBJ\\BJ13_M32x32_T30_InOut.h5')
運行模型
沒有gpu下運算速度很慢(未能成功安裝tensorflow-gpu或者theano gpu版本)
在gpu下成功運行速度加快
作者的源代碼只跑模型,不輸出結果,需要重寫程序讀取數據和輸出可視化結果
進出流量應該是網格的進出流量,而非OD流量