Windows未成功加载下安装theano成功,但一import就报decode错是什么原因

8119 条评论分享收藏感谢收起赞同 1K170 条评论分享收藏感谢收起theano是一个科学计算库,可用于深度学习:
此文主要的学习路线见文
http://blog.csdn.net/abcjennifer/article/details/7826917
主要分三部分:python安装,theano的安装和实验计算
part 1 python和ide
theano是一个python库,这里写一下装python的过程,已经装好python的可以略过。
python的入门教程:
http://www.liaoxuefeng.com/wiki/095c955c1e6d8bbfac
主要看python的安装和第三方库的安装
1)python安装
python2.x和3.x不兼容,为使用大部分库这里使用2.7,下载地址:
安装方法:一路继续,最后在环境变量Path里添加:C:\Python27
如何实验:使用powershell,输入python回车
变成&&&就表示python已经安装成功
2)IDE的选择
选择合适的集成开发环境对编程的速度很有影响,在这里我选择sublime text2,现在sublime已经出到3,我安装的依然是2
如何把sublime配置成一个适合python开发的环境,参见文章:
http://www.cnblogs.com/waising/articles/3466120.html
基本相同。
我安装的插件有Package control(必装,用于在线自动安装其他插件)
SublimeREPL:使能接收raw_input(),设置快捷键可以方便使用,设置教程见:http://blog.chinaunix.net/uid--id-4269991.html
Jedi:自动补全
SublimeLinter:检查符合PEP8要求
若不能自动安装,则可以选择手动安装:
手动安装的步骤:google相应的包,以sublimeREPL为例 到github &https://github.com/wuub/SublimeREPL 下载之后,解压到
C:\Users\(你的用户名)AppData\Roaming\Sublime Text 2\Packages
重启sublime text
part2 &theano的安装:
我的环境:64位电脑,但是numpy和scrpy没找到64位的。。所以都装的32位。。
官方的安装教程http://deeplearning.net/software/theano/install.html#install &
事实上,theano的安装与一般第三方库的安装方法并无二致,也有一些集成好的软件供使用,这里我仍采取最一般的方法
1.theano安装
第三方库的安装方法有两种
1)使用easy_install自动安装
仍见廖雪峰教程http://www.liaoxuefeng.com/wiki/095c955c1e6d8bbfac/c5b3b45b3a3ba1cd81a251a3b000
下载ez_setup.py,使用python ez_setup.py安装
添加C:\Python27\Scripts到环境变量Path
使用powershell或者命令提示符运行easy_install +模块名自动搜索下载
2)手动安装
在网站http://sourceforge.net/搜索模块名,找exe文件安装,安装时程序会自己找到路径,若提示找不到python须检查python版本与你所装的版本是否同为32位或者64位
在使用easy_install安装theano时会自己下载dependences numpy和scipy
我的自动下载不太成功,因此我的安装顺序为:
手动安装numpy----手动安装scipy----ez安装theano----ez安装matplotlib(绘图的python库)
安装完毕后在python中运行import theano测试
2.cuda的安装
cuda是英伟达的GPU测试平台,下载地址
https://developer.nvidia.com/cuda-downloads
注意的是,这里下载64还是32位版本要和电脑一致,而不是和python一致,因为和系统不一致的话会报错,进行安装
修改配置文件,在用户/你的用户名 下建立一个名为.theanorc的txt文件
我的配置文件如下:
[global]device = gpufloatX=float32[bias]Idflags=[gcc]cxxflags= -IC:\MinGW\include[nvcc]flags=-LC:\Python27\libscompiler_bindir=D:\Program Files (x86)\visio studio\VC\bin
[gcc]里放的是gcc的地址,需要安装MinGW,见下文
[nvcc]放的是c++编译器,上面是我的地址,各位请自行调整
在命令提示符里运行nvcc -v看编译是否正常
运行deviceQuery.exe 看能不能读到显卡
这时候再import theano会提示:
WARNING (theano.configdefaults): g++ not detected ! Theano will be unable to execute optimized C-implementations (for both CPU and GPU) and will default to Python implementations. Performance will be severely degraded
cuda is installed,but device gpu is not available
提示缺少g++,需要安装MinGW
MinGW的安装过程不再赘述,安装一个几十k的小文件后选择要使用的模块后自动安装,由于不懂,我把base的所有模块都装了
安装完成之后先找到g++.exe,并把其地址添加环境变量path---C:\MinGW\C:\MinGW\include,使用命令行运行一下g++,如果没有问题的话会是
这时再运行import theano测试是否正常
然后就可以运行一些例程尝试一下
目前不懂的是,theano的官网这样介绍
&&Theano can use&g++&or&nvcc&to compile parts your expression graph into CPU or GPU instructions, which run much faster than pure Python.
也就是g++或者nvcc装一个就购了,装了cuda为什么还要装g++呢
阅读(...) 评论()import json就出现错误,平台不兼容?
[问题点数:100分]
本版专家分:0
结帖率 60%
CSDN今日推荐
本版专家分:5137
2018年3月 Linux/Unix社区大版内专家分月排行榜第二2002年6月 其他开发语言大版内专家分月排行榜第二
本版专家分:0
本版专家分:9893
2009年 总版技术专家分年内排行榜第二2005年 总版技术专家分年内排行榜第二
2009年7月 总版技术专家分月排行榜第二2009年3月 总版技术专家分月排行榜第二2009年1月 总版技术专家分月排行榜第二2005年7月 总版技术专家分月排行榜第二2005年5月 总版技术专家分月排行榜第二2005年3月 总版技术专家分月排行榜第二
优秀小版主2015年8月优秀小版主2015年9月优秀小版主2015年5月优秀小版主2015年2月论坛优秀版主
2009年6月 总版技术专家分月排行榜第三2009年2月 总版技术专家分月排行榜第三2005年4月 总版技术专家分月排行榜第三2005年1月 总版技术专家分月排行榜第三
本版专家分:0
匿名用户不能发表回复!
其他相关推荐中文文档:& 官方文档:& 文档主要是以keras2.0。&.
Keras系列:
1、&2、&3、&4、&5、
一、Application的五款已训练模型 + H5py简述
Kera的应用模块Application提供了带有预训练权重的Keras模型,这些模型可以用来进行预测、特征提取和finetune。&后续还有对以下几个模型的参数介绍:
InceptionV3
所有的这些模型(除了Xception)都兼容Theano和Tensorflow,并会自动基于~/.keras/keras.json的Keras的图像维度进行自动设置。例如,如果你设置data_format=”channel_last”,则加载的模型将按照TensorFlow的维度顺序来构造,即“Width-Height-Depth”的顺序。
模型的官方下载路径:
1、th与tf的区别
==================
Keras提供了两套后端,Theano和Tensorflow,&th和tf的大部分功能都被backend统一包装起来了,但二者还是存在不小的冲突,有时候你需要特别注意Keras是运行在哪种后端之上,它们的主要冲突有:
dim_ordering,也就是维度顺序。比方说一张224*224的彩色图片,theano的维度顺序是(3,224,224),即通道维在前。而tf的维度顺序是(224,224,3),即通道维在后。&卷积层权重的shape:从无到有训练一个网络,不会有任何问题。但是如果你想把一个th训练出来的卷积层权重载入风格为tf的卷积层……说多了都是泪。我一直觉得这个是个bug,数据的dim_ordering有问题就罢了,为啥卷积层权重的shape还需要变换咧?我迟早要提个PR把这个bug修掉!&然后是卷积层kernel的翻转不翻转问题,这个我们说过很多次了,就不再多提。&数据格式的区别,channels_last”对应原本的“tf”,“channels_first”对应原本的“th”。&以128x128的RGB图像为例,“channels_first”应将数据组织为(3,128,128),而“channels_last”应将数据组织为(128,128,3)。&譬如:&vgg16_weights_th_dim_ordering_th_kernels_notop.h5&vgg16_weights_tf_dim_ordering_tf_kernels_notop.h5&.
2、notop模型是指什么?
==============
是否包含最后的3个全连接层(whether to include the 3 fully-connected layers at the top of the network)。用来做fine-tuning专用,专门开源了这类模型。&.
3、H5py简述
keras的已训练模型是H5PY格式的,不是caffe的.caffemodel&h5py.File类似Python的词典对象,因此我们可以查看所有的键值:&读入
file=h5py.File('.../notop.h5','r')
f.attrs['nb_layers'],代表f的属性,其中有一个属性为'nb_layers'
&&& f.keys()
[u'block1_conv1', u'block1_conv2', u'block1_pool', u'block2_conv1', u'block2_conv2', u'block2_pool', u'block3_conv1', u'block3_conv2', u'block3_conv3', u'block3_pool', u'block4_conv1', u'block4_conv2', u'block4_conv3', u'block4_pool', u'block5_conv1', u'block5_conv2', u'block5_conv3', u'block5_pool']
可以看到f中各个层内有些什么。
for name in f:
print(name)
4、官方案例——利用ResNet50网络进行ImageNet分类
================================
rom keras.applications.resnet50 import ResNet50
from keras.preprocessing import image
from keras.applications.resnet50 import preprocess_input, decode_predictions
import numpy as np
model = ResNet50(weights='imagenet')
img_path = 'elephant.jpg'
img = image.load_img(img_path, target_size=(224, 224))
x = image.img_to_array(img)
x = np.expand_dims(x, axis=0)
x = preprocess_input(x)
preds = model.predict(x)
print('Predicted:', decode_predictions(preds, top=3)[0])
# Predicted: [(u'n', u'Indian_elephant', 0.), (u'n', u'tusker', 0.1122357), (u'n', u'African_elephant', 0.)]
还有的案例可见
利用VGG16提取特征、从VGG19的任意中间层中抽取特征、在定制的输入tensor上构建InceptionV3
5、调用参数解释
以下几类,因为调用好像都是从网站下载权重,所以可以自己修改一下源码,让其可以读取本地H5文件。
Xception模型
ImageNet上,该模型取得了验证集top1 0.790和top5 0.945的正确率;&,该模型目前仅能以TensorFlow为后端使用,由于它依赖于”SeparableConvolution”层,目前该模型只支持channels_last的维度顺序(width, height, channels)
默认输入图片大小为299x299
keras.applications.xception.Xception(include_top=True, weights='imagenet',
input_tensor=None, input_shape=None,
pooling=None, classes=1000)
VGG16模型,权重由ImageNet训练而来
该模型再Theano和TensorFlow后端均可使用,并接受channels_first和channels_last两种输入维度顺序
模型的默认输入尺寸时224x224
keras.applications.vgg16.VGG16(include_top=True, weights='imagenet',
input_tensor=None, input_shape=None,
pooling=None,
classes=1000)
VGG19模型,权重由ImageNet训练而来
该模型在Theano和TensorFlow后端均可使用,并接受channels_first和channels_last两种输入维度顺序
模型的默认输入尺寸时224x224
keras.applications.vgg19.VGG19(include_top=True, weights='imagenet',
input_tensor=None, input_shape=None,
pooling=None,
classes=1000)
ResNet50模型
50层残差网络模型,权重训练自ImageNet
该模型在Theano和TensorFlow后端均可使用,并接受channels_first和channels_last两种输入维度顺序
模型的默认输入尺寸时224x224
keras.applications.resnet50.ResNet50(include_top=True, weights='imagenet',
input_tensor=None, input_shape=None,
pooling=None,
classes=1000)
InceptionV3模型
InceptionV3网络,权重训练自ImageNet
该模型在Theano和TensorFlow后端均可使用,并接受channels_first和channels_last两种输入维度顺序
模型的默认输入尺寸时299x299
keras.applications.inception_v3.InceptionV3(include_top=True,
weights='imagenet',
input_tensor=None,
input_shape=None,
pooling=None,
classes=1000)
二、 keras-applications-VGG16解读——函数式
.py文件来源于:&VGG16默认的输入数据格式应该是:channels_last
1、如何已经把模型下载到本地
==============
模型已经下载,不再每次从网站进行加载,可以修改以下内容。
WEIGHTS_PATH = 'https://github.com/fchollet/deep-learning-models/releases/download/v0.1/vgg16_weights_tf_dim_ordering_tf_kernels.h5'
WEIGHTS_PATH_NO_TOP = 'https://github.com/fchollet/deep-learning-models/releases/download/v0.1/vgg16_weights_tf_dim_ordering_tf_kernels_notop.h5'
weights_path = get_file('vgg16_weights_tf_dim_ordering_tf_kernels.h5',
WEIGHTS_PATH,
cache_subdir='models')
weights_path = get_file('vgg16_weights_tf_dim_ordering_tf_kernels_notop.h5',
WEIGHTS_PATH_NO_TOP,
cache_subdir='models')
2、几个layer中的新用法
==============
from keras.applications.imagenet_utils import decode_predictions
decode_predictions 输出5个最高概率:(类名, 语义概念, 预测概率) decode_predictions(y_pred)
from keras.applications.imagenet_utils import preprocess_input
预处理 图像编码服从规定,譬如,RGB,GBR这一类的,preprocess_input(x)
from keras.applications.imagenet_utils import _obtain_input_shape
确定适当的输入形状,相当于opencv中的read.img,将图像变为数组
(1)decode_predictions用在最后输出结果上,比较好用【print(‘Predicted:’, decode_predictions(preds))】;&(2)preprocess_input,改变编码,【preprocess_input(x)】;&(3)_obtain_input_shape&相当于caffe中的transform,在预测的时候,需要对预测的图片进行一定的预处理。
input_shape = _obtain_input_shape(input_shape,
default_size=224,
min_size=48,
# 模型所能接受的最小长宽
data_format=K.image_data_format(),
# 数据的使用格式
include_top=include_top)
3、当include_top=True时
====================
fc_model = VGG16(include_top=True)
notop_model = VGG16(include_top=False)
之前提到过用VGG16做fine-tuning的时候,得到的notop_model就是没有全连接层的模型。然后再去添加自己的层。&当时健全的网络结构的时候,fc_model需要添加以下的内容以补全网络结构:
x = Flatten(name='flatten')(x)
x = Dense(4096, activation='relu', name='fc1')(x)
x = Dense(4096, activation='relu', name='fc2')(x)
x = Dense(classes, activation='softmax', name='predictions')(x)
pool层之后接一个flatten层,修改数据格式,然后接两个dense层,最后有softmax的Dense层。&.
4、如果输入的数据格式是channels_first?
===========================
如果input的格式是’channels_first’,fc_model还需要修改一下格式,因为VGG16源码是以’channels_last’定义的,所以需要转换一下输出格式。
maxpool = model.get_layer(name='block5_pool')
其中layer_utils.convert_dense_weights_data_format的作用很特殊,官方文档中没有说明,本质用来修改数据格式,因为层中有Flatter层把数据格式换了,所以需要再修改一下。&原文:
When porting the weights of a convnet from one data format to the other,if the convnet includes a&Flatten&layer (applied to the last convolutional feature map) followed by a&Dense&layer, the weights of that&Dense&layer should be updated to reflect the new dimension ordering.
三、keras-Sequential-VGG16源码解读:序列式
本节节选自Keras中文文档
已训练好VGG16和VGG19模型的权重:&国外:&国内:
前面是VGG16架构的函数式模型的结构,那么在官方文档这个案例中,也有VGG16架构的序列式,都拿来比对一下比较好。&.
1、VGG16的Sequential-网络结构
首先,我们在Keras中定义VGG网络的结构:
from keras.models import Sequential
from keras.layers import Convolution2D, ZeroPadding2D, MaxPooling2D
img_width, img_height = 128, 128
从使用Convolution2D来看,是比较早的版本写的。&.
2、Sequential模型如何部分layer载入权重
下面,我们将预训练好的权重载入模型,一般而言我们可以通过model.load_weights()载入,但这种办法是载入全部的权重,并不适用。&之前所看到的No_top模型就是用来应付此时的。&这里我们只载入一部分参数,用的是set_weights()函数,所以我们需要手工载入:
import h5py
weights_path = '.../vgg16_weights.h5'
f = h5py.File(weights_path)
for k in range(f.attrs['nb_layers']):
if k &= len(model.layers):
g = f['layer_{}'.format(k)]
weights = [g['param_{}'.format(p)] for p in range(g.attrs['nb_params'])]
model.layers[k].set_weights(weights)
print('Model loaded.')
笔者在实践过程中,并没有实践出来,因为我载入的.h5,不知道为什么没有属性f.attrs[‘nb_layers’]也没有属性g.attrs[‘nb_params’])&在寻找答案的过程中,看到有前人也跟我一样的问题,可见():
Q1.f.attrs[‘nb_layers’]是什么意思?我看h5py中没有’nb_layers’的属性啊?attrs是指向f中的属性,点击右键可以看见这个属性(在HDF5-viewer)
Q2.g= f[‘layer_{}’.format(k)]的含义,.format的作用&format是格式化的意思,输出g就是format(k)填充到{}上
Q3.weights = [g[‘param_{}’.format(p)] for p&inrange(g.attrs[‘nb_params’])]的含义 得到的是layer下param_0、param_1等&这里用到的是set_weights(weights),weights设置的大小应与该层网络大小一致,否则会报错。
阅读(...) 评论()由于要使用python工具进行深度学习的实验,所以在windows的eclipse中配置了pydev,并在windows上安装了python的一些扩展库,如Numpy、Scipy。
windows安装python
从https://www.python.org/downloads/下载python2.7.6版本,在windows相应的Path环境变量中添加python安装目录作为Path,然后打开cmd窗口,输入python回车,如果显示了python版本号,说明安装成功。
eclipse安装pydev插件
从http://download.csdn.net/download/q52wow/2872235下载相应的pydev,解压,将解压后的features文件夹中文件移到eclipse安装目录的{eclipse}\features目录下,plugins移到{eclipse}\plugins目录下,重启eclipse,如果Windows--&preference出现PyDev配置项,表示PyDev插件安装成功。
eclipse配置PyDev插件
在eclipse--&windows--&preference--&PyDev--&Interpreter - Python中,New一个Python解释器,填上解释器名字和路径,路径选第一步安装Python的python.exe路径即可。
File-&New-&Project,选PyDev下的PyDev Project,Grammer和Interpreter选相应的版本,Finish测试。
windows下easy_install安装
因为我的笔记本安装的是64位系统,所以先在http://peak.telecommunity.com/dist/ez_setup.py下载相应的ez_setup.py文件,然后在cmd中执行python ez_setup.py,即可自动安装setoptools。在安装好后,对应的python/scripts文件夹下会有六个对应的easy_install文件,注意要将scripts的文件夹路径也添加到Path环境变量中去。然后在cmd中输入easy_install
virtualenv,可以验证是否正确安装。
windows安装pip
从https://raw.githubusercontent.com/pypa/pip/master/contrib/get-pip.py下载python文件至python安装目录中,cmd执行这个文件,即可安装成功。这时的python/scripts文件夹下面应该有pip、easy_install等文件,不过相应的scripts文件夹路径在上一步已经添加到Path路径中,这里不需重复添加。
windows安装numpy
在网上下载numpy-1.9.2+mkl-cp27-none-win_amd64.whl文件,在cmd下执行pip install numpy-1.9.2+mkl-cp27-none-win_amd64.whl命令安装numpy。如果出现UnicodeDecodeError: 'ascii' codec can't decode byte 0xb0 in position 1: ordinal not in range(128) 错误,打开Python27\Lib下的
mimetypes.py文件,在256行的 default_encoding = sys.getdefaultencoding() 前面添加三行即可:
if sys.getdefaultencoding() != 'gbk':
reload(sys)
sys.setdefaultencoding('gbk')
default_encoding = sys.getdefaultencoding()
windows安装scipy
安装scipy之前,需要安装numpy~
在网上下载scipy-0.15.1-cp27-none-win_amd64.whl文件,在cmd执行pip install scipy-0.15.1-cp27-none-win_amd64.whl命令即可。
测试是否正确安装,可以在python环境中测试import numpy as py。如果没有错误提示则安装正确!
其实,windows下安装一些python的插件包、扩展包,可以直接安装一个叫做anaconda的科学计算环境,后面一篇博客,我来教大家如何搭建Anaconda+VS2013+CUDA的Theano深度学习开发环境!!
文中部分文件包、插件,我上传给大家,免得再一个一个找麻烦!
参考博客:
Eclipse添加python第三方包
Eclipse添加python第三方包
方法一:Project-&properties-&pydev-interpreter/Grammar点击click here to configure an ...
python虚拟环境搭建,虚拟环境迁移,三方库安装
python虚拟环境virtualenv
VirtualEnv用于在一台机器上创建多个独立的python运行环境,VirtualEnvWrapper为前者提供了一些便利的命令行上的封装。
python+Eclipse+pydev环境搭建
编辑器:Python 自带的 IDLE
简单快捷, 学习Python或者编写小型软件的时候。非常有用。
编辑器: Eclipse + pydev插件
1. Eclipse是写JAVA...
python+Eclipse+pydev环境搭建
本文重点介绍使用Eclipse+pydev插件来写Python代码,
以及在Mac上配置Eclipse+Pydev 和Windows配置Eclipse+Pydev
编辑器:Pyth...
python安装第三方的包
第一种基本安装方法
1 下载第三方包,解压
2 在命令提示符里输入cmd,然后用cd进入到第三方包的路径下
3 输入python setup.py build
4 输入pyth...
Pydev下载地址
官方原址:http://pydev.org/updates
有堵墙,我是没过去,也没有代理,找啊找,找到了下面这个网址也是在更新的,可以访问https://sourceforge.net/proje...
Python安装其他包、工具、库的方法总结
描述:安装完Python之后,在写Python程序时经常需要调用一些Python库,例如下面的代码中调用了多种库,这些python的库都需要自己安装。
本文总结了几种常用的给python安装运...
Python&Opencv&Pycharm安装及环境配置
安装Python36
https://www.python.org/
我的电脑是64位,所以选择86-64的,但是此处共有三种这样的,分别指:
Web-based installer ...
python3.7 pip 安装numpy问题
我的是win10的系统,去python官网下载python3.7安装CMD
#打开命令窗口pip install numpy #在cmd中输入提示 需要c++14.0,解决办法:1, 进入https...
没有更多推荐了,
(window.slotbydup=window.slotbydup || []).push({
id: "5865577",
container: s,
size: "300,250",
display: "inlay-fix"}

我要回帖

更多关于 Windows无法成功安装 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信