ubuntu 下安装完tensorflow 后 import 提示 no module named tensorflow

原版:lucas---北京交通大学-nlp研究

今天在ubuntu下面通过pip3 install tensorflow=1.4.0安装完tensorflow的时候,进入python3后import tensorflow出现如下问题:

 import tensorflow
Traceback (most recent call last):
  File "", line 1, in

ImportError: No module named 'tensorflow'

但是安装完了之后是提示安装成功的,我也截图了安装完提示如下:

ubuntu 下安装完tensorflow 后 import 提示 no module named tensorflow_第1张图片

自己怀疑是路径没有找到的问题,后来自己查了自己的python3.5的路径在/usr/local/lib/python3.5/dist-packages下面是有tensorflow的,后来坚信是路径问题了.最后查找了看python关于path的方法,方法如下所示:

自己在import sys并且sys.path的时候确实没看到我的dist-packages,所以我按照下面方法2建立了链接,直接引导我的dist-packages里面.最后成功找到了.大功告成.--------------------------------此经验全是原著,所以引用追责哦.哈哈

python和linux的环境设置/PATH

一、python的环境设置

1.输出path列表:

pi@raspberrypi:~$ python
Python 3.4.0 (default, Jul 1 2014, 09:37:01) 
[GCC 4.6.3] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path
['', '/usr/local/Python-3.4.0/lib/python3.4/site-packages/setuptools-5.4.1-py3.4.egg', '/usr/local/Python-3.4.0/lib/python34.zip', '/usr/local/Python-3.4.0/lib/python3.4', '/usr/local/Python-3.4.0/lib/python3.4/plat-linux', '/usr/local/Python-3.4.0/lib/python3.4/lib-dynload', '/usr/local/Python-3.4.0/lib/python3.4/site-packages']

sys.path包含了一个Python解释器自动查找所需模块的路径的列表。注意列表中的第一个字符串是空的,这说明当前目录也是sys.path中的一部份,环境变量PYTHONPATH也一样。这说明你可以在程序中引入当前目录中的模块。

2.添加路径方法一:(退出后会消失,适合临时使用)

sys.path.append('路径')。//append是列表的方法。如:

>>>import sys

>>>sys.path.append(“/home/lxc/software/program/python”)

>>>import getopt_exam

>>>getopt_exam.version()

用以上方法修改退出python后,发现增加的路径又消失了,所以还是用以下方法二了。

3.添加路径方法二:

通过建立.pth文件方式

在python3.4的site-packages文件夹下中创建 .pth文件,然后将需要添加的路径写到.pth文件中去,pth文件也可以使用注释,如下:

cd /usr/local/Python-3.4.0/lib/python3.4/site-packages    //这个文件夹也是pyhton模块安装的地方

sudo nano pythonpathdelf.pth

# .pth file for the my project(这行是注释)

/usr/lib/pyshared/python2.7/smbus.so 
/usr/lib/python2.7/dist-packages/smbus-1.1.egg-info
/usr/lib/python2.7/dist-packages/smbus.so
/usr/share/pyshared/smbus-1.1.egg-info
/usr/local/src/i2c-tools-3.1.1/py-smbus/smbusmodule.c

4.添加路径方法三://不知道如何删除其中的路径

通过PYTHONPATH方法

linxu下:export PYTHONPATH=$PYTHONPATH:/home/pi/pthonfile

二、linux环境设置:PATH

echo $PATH

PATH=$PATH:要添加的路径

echo $PATH

PATH的作用:在shell中执行的命令,会去$PATH中的目录里去找命令,如果该命令不包括在其中则会报错。

原版:lucas---北京交通大学-nlp研究

我尝试在site-packages下面建了一个.pth后,在其中添加了我的/usr/local/lib/python3.5/dist-packages目录,因为默认path是找不到我这个目录的,所以我添加了下,结果又出现了如下问题:

import tensorflow
Traceback (most recent call last):
  File "", line 1, in
  File "/usr/local/lib/python3.5/dist-packages/tensorflow/__init__.py", line 24, in
    from tensorflow.python import *
  File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/__init__.py", line 52, in
    from tensorflow.core.framework.graph_pb2 import *
  File "/usr/local/lib/python3.5/dist-packages/tensorflow/core/framework/graph_pb2.py", line 6, in
    from google.protobuf import descriptor as _descriptor
  File "/usr/local/lib/python3.5/dist-packages/google/protobuf/descriptor.py", line 37, in
    import six
ImportError: No module named 'six'

解决方法:

1:先用pip3 uninstall six去卸载原来存在的six模块后

2:再通过pip3 重新安装six模块

ubuntu 下安装完tensorflow 后 import 提示 no module named tensorflow_第2张图片

最后再次import:成功:


大功告成!!!!!!!!!!!!!!

原版:lucas---北京交通大学-nlp研究

  1. TensorFlow实例

下面讲解通过一个实例讲解TensorFlow的用法,以及如何通过它的训练得到优化后的参数的。这个例子中y_data 为实际的输出,其中x_data 为原始的训练输入数据,它的权重为0.1,偏置为0.3,也就是一条线性的直线,y为训练模型的预测值,tensorflow训练要达到目的就是使得y和y_data也就是预测值和实际值的均方差loss最小,经过以系列训练过后,如果训练得到的Weights权重,和biases偏置逼近了0.1和0.3则就说明训练达到了好的效果。

 原版:lucas---北京交通大学-nlp研究

"""

Please note, this code is only for python 3+. If you are using python 2+, please modify the code accordingly.

"""

import tensorflow as tf

import numpy as np #科学计算的模块

 

# create data

x_data = np.random.rand(100).astype(np.float32) #生成100个随机数列,数据类型是float32,tf中大多数都用的是float32

y_data = x_data*0.1 + 0.3 #0.1为权重,0.3为偏置

 

### create tensorflow structure start ###

Weights = tf.Variable(tf.random_uniform([1], -1.0, 1.0))#用Variable初始化Weights权重变量-随机数列生成-1到1的1维数据,

biases = tf.Variable(tf.zeros([1])) #偏置初始化为0,

 

y = Weights*x_data + biases #所要预测的y,通过训练使得y逼近真实的y_data,优化得到的参数变量就即Weights和biases

 

loss = tf.reduce_mean(tf.square(y-y_data)) #预测的y和实际的y_data的差别,即均方差

optimizer = tf.train.GradientDescentOptimizer(0.5) #用tf的梯度下降优化器减少误差loss,提升参数的准确度,0.5为学习效率(一般小于1)

train = optimizer.minimize(loss) #训练以减少误差

 

init = tf.initialize_all_variables() #初始化tf结构图中的所有变量,这里是Weights和biases

### create tensorflow structure end ###

 

sess = tf.Session() #激活创建的结构图,Sesssion是神经网路的执行命令的对话控制

sess.run(init) #激活init,也就是所有结构

 

for step in range(201):#让神经网络一步一步的训练 201步

sess.run(train) # 开始训练

if step % 20 == 0: #每间隔20步打印以下训练得到的变量值

print(step, sess.run(Weights), sess.run(biases))

 原版:lucas---北京交通大学-nlp研究

 原版:lucas---北京交通大学-nlp研究

训练效果:

ubuntu 下安装完tensorflow 后 import 提示 no module named tensorflow_第3张图片

我们看到每个20步打印了训练的权重和偏置,并且随着训练的进行权重和偏置逐渐的逼近0.1和0.3,说明模型通过了训练达到了良好的效果。

  1. 实例警告处理

我们同时看到运行过程中有一些警告:

WARNING:tensorflow:From tf_exam1.py:23: initialize_all_variables (from tensorflow.python.ops.variables) is deprecated and will be removed after 2017-03-02.

Instructions for updating:

Use `tf.global_variables_initializer` instead.

意思是initialize_all_variables即将要被弃用,推荐用global_variables_initializer()函数来代替。所以根据提示之际用新的函数代替即可。

 

W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE4.2 instructions, but these are available on your machine and could speed up CPU computations.  

W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use AVX instructions, but these are available on your machine and could speed up CPU computations

 

这些warings的意思是说:你的机器上有这些指令集可以用,并且用了他们会加快你的CPU运行速度,但是你的TensorFlow在编译的时候并没有用到这些指令集。

 

我的tensorflow在安装的时候采用的pip install指令,这种安装方式会存在这种问题。主要有两种解决方法,一种是修改警告信息的显示级别,使这种信息不再出现,另外一种就是自己重新编译安装tensorflow,在编译的时候使用这些指令集。这里我尝试第二种解决方法。并且由于我的机器上没有高效的GPU,所以我尝试安装的是CPU版本。

这里因为不影响实验就不处理这个warning,所以修改了第一个warning之后的程序变成:

"""

Please note, this code is only for python 3+. If you are using python 2+, please modify the code accordingly.

"""

import tensorflow as tf

import numpy as np #科学计算的模块

 

# create data

x_data = np.random.rand(100).astype(np.float32) #生成100个随机数列,数据类型是float32,tf中大多数都用的是float32

y_data = x_data*0.1 + 0.3 #0.1为权重,0.3为偏置

 

### create tensorflow structure start ###

Weights = tf.Variable(tf.random_uniform([1], -1.0, 1.0))#用Variable初始化Weights权重变量-随机数列生成-1到1的1维数据,

biases = tf.Variable(tf.zeros([1])) #偏置初始化为0,

 

y = Weights*x_data + biases #所要预测的y,通过训练使得y逼近真实的y_data,优化得到的参数变量就即Weights和biases

 

loss = tf.reduce_mean(tf.square(y-y_data)) #预测的y和实际的y_data的差别,即均方差

optimizer = tf.train.GradientDescentOptimizer(0.5) #用tf的梯度下降优化器减少误差loss,提升参数的准确度,0.5为学习效率(一般小于1)

train = optimizer.minimize(loss) #训练以减少误差

 

init = tf.global_variables_initializer() #初始化tf结构图中的所有变量,这里是Weights和biases

### create tensorflow structure end ###

 

sess = tf.Session() #激活创建的结构图,Sesssion是神经网路的执行命令的对话控制

sess.run(init) #激活init,也就是所有结构

 

for step in range(201):#让神经网络一步一步的训练 201步

sess.run(train) # 开始训练

if step % 20 == 0: #每间隔20步打印以下训练得到的变量值

print(step, sess.run(Weights), sess.run(biases))

 

运行的效果:

ubuntu 下安装完tensorflow 后 import 提示 no module named tensorflow_第4张图片

这次没有了第一个警告。

例子程序存放在oschina上:

http://git.oschina.net/wjiang/tensorflow_python3

git clone http://git.oschina.net/wjiang/tensorflow_python3

原版:lucas---北京交通大学-nlp研究

你可能感兴趣的:(开发小心得,数据挖掘相关算法,开发工具心得)