一、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 "
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模块
最后再次import:成功:
大功告成!!!!!!!!!!!!!!
原版:lucas---北京交通大学-nlp研究
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研究
训练效果:
我们看到每个20步打印了训练的权重和偏置,并且随着训练的进行权重和偏置逐渐的逼近0.1和0.3,说明模型通过了训练达到了良好的效果。
实例警告处理
我们同时看到运行过程中有一些警告:
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))
运行的效果:
这次没有了第一个警告。
例子程序存放在oschina上:
http://git.oschina.net/wjiang/tensorflow_python3
git clone http://git.oschina.net/wjiang/tensorflow_python3
原版:lucas---北京交通大学-nlp研究