2018年,新的开始

希望自己能保持每周至少更新一次代码的频率,从这次开始

  • 安装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流量


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值