希望自己能保持每周至少更新一次代码的频率,从这次开始
全文主要是为了实现微软研究院郑宇的研究而做的努力
- 作者程序用的是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关联)
驱动精灵保证驱动正确安装
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
部分说明要求配置环境,感觉像是内部建立小环境(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环境下的配置过程
# 测试程序一
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))
需要先装CUDA和CUDNN,用于GPU加速(同版本,已安装1.4.0,一定pip)
速度太慢可以考虑其他镜像源,如清华和阿里云,生成文件在C:\Users\hp\
版本不太新 / 挂不加镜像则下的快,但存在代理和版本不适应风险
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
通过安装包(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
可能存在问题
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)
作者建议安装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
查询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()
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流量