Windows10环境下搭建基于TensorFlow开发环境学习笔记

TensorFlow是google 开源的机器学习工具,在2015年11月其实现正式开源,开源协议Apache 2.0,被广泛应用于各类machine learning算法的编程实现,其前身是Google的神经网络算法库DistBelief  。

Tensorflow 拥有易用的 python 接口,而且可以部署在一台或多台 cpu , gpu 上,兼容多个平台,包括但不限于 安卓/windows/linux 等等平台上,而且拥有 tensorboard这种可视化工具,可以使用 checkpoint 进行实验管理,得益于图计算,它可以进行自动微分计算,拥有庞大的社区,而且很多优秀的项目已经使用 tensorflow 进行开发了。

第一次学习,这里是简要笔记,部分内容参考网络。

1.1  准备工作

采用Anaconda3,因为Anaconda3集成了Python和各种用到的库,但最新版本的Anaconda3集成了最新的Python3.6版,它对TensorFlow支持并不友好(会报错),比较稳定的版本是Python3.5。

操作系统:

Windows 10家庭版

软件版本:

Anaconda3-4.3.0-Windows-x86_64.exe(直接去官网下载)

python-3.5.2-amd64.exe(我是单独下载并安装的)

1.2  开始安装

第一步:安装python3.5.2(这个没什么特别的)

第二步:安装Anaconda3

执行Anaconda3-4.3.0-Windows-x86_64.exe

安装完成后:

 

备注:笔记记录是安装完后写的,有些组件是后续步骤安装生成的。

 

第三步:打开Anaconda Prompt,输入清华仓库镜像,更新会快一些(使用标准的也可以跳过): 

(tensorflow) C:\Users\45014>conda config --add
channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/

(tensorflow) C:\Users\45014>conda config --set show_channel_urls yes

 

第四步:在Anaconda Prompt中利用Anaconda创建一个python3.5的环境

环境名称为tensorflow ,输入命令:

(tensorflow) C:\Users\45014>conda create -n tensorflow python=3.5

 打开Anaconda Navigator,点击左侧的Environments,可以看到tensorflow的环境已经创建好

 

备注:右侧已经安装的包是后来手工安装的,不是默认已安装的。

 

第五步:在Anaconda Prompt中启动tensorflow环境:

(tensorflow) C:\Users\45014>activate tensorflow

 

第六步:基于pip安装CPU版本的TensorFlow(GPU的没有学习)

 安装cpu版本的Tensorflow:

(tensorflow) C:\Users\45014>pip install --upgrade --ignore-installed tensorflow

这个需要一点时间,安装完成这样tensorflow cpu版本就安装好了。

 

注意:这里可能错误,我的原因是pip版本太低,需要升级,升级pip命令:

python -m pip install --upgrade pip

 

1.3  命令行基本测试

命令行测试代码如下:

(tensorflow) C:\Users\45014>python

Python 3.5.2 |Continuum Analytics, Inc.| (default, Jul  5 2016, 11:41:13) [MSC v.1900 64 bit (AMD64)] on win32

Type "help", "copyright", "credits" or "license" for more information.

>>> import tensorflow as tf

>>> hello = tf.constant('Hello, TensorFlow!')

>>> sess = tf.Session()

>>> print(sess.run(hello))

b'Hello, TensorFlow!'

>>> 

>>> 

 

1.4  图形界面基本测试

为了能在Spyder中使用tensorflow,我们需要在tensorflow的环境中安装这个的插件。

打开Anaconda Navigator,选择Not installed,找到Spyder并安装,安装完成后显示如下:

 

打开Spyder,创建一个新的文件,然后输入:

 

# -*- coding: utf-8 -*-
"""
Created on Sat Mar 23 19:57:07 2019
@author: 45014
"""
import tensorflow as tf
hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session()
print(sess.run(hello))

 

输出:

runfile('D:/AI/test.py', wdir='D:/AI')

b'Hello, TensorFlow!'

 

1.5  线性回归测试测试

如下代码来自网络,供初始学习:

 

说明:Numpy:是Python的科学计算库,提供矩阵运算。

 

           matplotlib: 绘图系统

TensorFlow两个重要概念:Tensor和Flow,Tensor就是张量(可以理解为多维数组),Flow就是计算相互转化的过程。TensorFlow的计算方式类似Spark的有向无环图(DAG),在创建Session之后才开始计算(类似Action算子)

 

# -*- coding: utf-8 -*-
"""
Spyder Editor

This is a temporary script file.
"""


import tensorflow as tf
import numpy
import matplotlib.pyplot as plt
rng = numpy.random

# Parameters
learning_rate = 0.01
training_epochs = 2000
display_step = 50

# Training Data
train_X = numpy.asarray([3.3,4.4,5.5,6.71,6.93,4.168,9.779,6.182,7.59,2.167,7.042,10.791,5.313,7.997,5.654,9.27,3.1])
train_Y = numpy.asarray([1.7,2.76,2.09,3.19,1.694,1.573,3.366,2.596,2.53,1.221,2.827,3.465,1.65,2.904,2.42,2.94,1.3])
n_samples = train_X.shape[0]

# tf Graph Input
X = tf.placeholder("float")
Y = tf.placeholder("float")

# Create Model

# Set model weights
W = tf.Variable(rng.randn(), name="weight")
b = tf.Variable(rng.randn(), name="bias")

# Construct a linear model
activation = tf.add(tf.multiply(X, W), b)

# Minimize the squared errors
cost = tf.reduce_sum(tf.pow(activation-Y, 2))/(2*n_samples) #L2 loss
optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(cost) #Gradient descent

# Initializing the variables
init = tf.initialize_all_variables()

# Launch the graph
with tf.Session() as sess:
    sess.run(init)

    # Fit all training data
    for epoch in range(training_epochs):
        for (x, y) in zip(train_X, train_Y):
            sess.run(optimizer, feed_dict={X: x, Y: y})

        #Display logs per epoch step
        if epoch % display_step == 0:
            print ("Epoch:", '%04d' % (epoch+1), "cost=", \
                "{:.9f}".format(sess.run(cost, feed_dict={X: train_X, Y:train_Y})), \
                "W=", sess.run(W), "b=", sess.run(b))

    print ("Optimization Finished!")
    print ( "cost=", sess.run(cost, feed_dict={X: train_X, Y: train_Y}), \
          "W=", sess.run(W), "b=", sess.run(b))

    #Graphic display
    plt.plot(train_X, train_Y, 'ro', label='Original data')
    plt.plot(train_X, sess.run(W) * train_X + sess.run(b), label='Fitted line')
    plt.legend()
    plt.show()

 

 输出结果:

 runfile('C:/Users/45014/.spyder-py3/temp.py', wdir='C:/Users/45014/.spyder-py3')
Epoch: 0001 cost= 1.820976377 W= 0.633242 b= 0.0618359
Epoch: 0051 cost= 0.110087097 W= 0.351423 b= 0.0689108
Epoch: 0101 cost= 0.106258854 W= 0.345367 b= 0.112479
Epoch: 0151 cost= 0.102872960 W= 0.339671 b= 0.153457
Epoch: 0201 cost= 0.099878326 W= 0.334314 b= 0.191997
Epoch: 0251 cost= 0.097229756 W= 0.329275 b= 0.228245
Epoch: 0301 cost= 0.094887264 W= 0.324536 b= 0.262337
Epoch: 0351 cost= 0.092815511 W= 0.320079 b= 0.294402
Epoch: 0401 cost= 0.090983227 W= 0.315887 b= 0.32456
Epoch: 0451 cost= 0.089362837 W= 0.311944 b= 0.352924
Epoch: 0501 cost= 0.087929703 W= 0.308235 b= 0.379601
Epoch: 0551 cost= 0.086662307 W= 0.304748 b= 0.404692
Epoch: 0601 cost= 0.085541502 W= 0.301467 b= 0.428289
Epoch: 0651 cost= 0.084550321 W= 0.298382 b= 0.450484
Epoch: 0701 cost= 0.083673775 W= 0.295481 b= 0.471359
Epoch: 0751 cost= 0.082898602 W= 0.292751 b= 0.490993
Epoch: 0801 cost= 0.082213178 W= 0.290185 b= 0.509457
Epoch: 0851 cost= 0.081607066 W= 0.28777 b= 0.526825
Epoch: 0901 cost= 0.081071086 W= 0.2855 b= 0.54316
Epoch: 0951 cost= 0.080597132 W= 0.283364 b= 0.558523
Epoch: 1001 cost= 0.080178089 W= 0.281356 b= 0.572972
Epoch: 1051 cost= 0.079807580 W= 0.279466 b= 0.586563
Epoch: 1101 cost= 0.079479963 W= 0.27769 b= 0.599345
Epoch: 1151 cost= 0.079190284 W= 0.276019 b= 0.611367
Epoch: 1201 cost= 0.078934260 W= 0.274447 b= 0.622673
Epoch: 1251 cost= 0.078707911 W= 0.272969 b= 0.633305
Epoch: 1301 cost= 0.078507796 W= 0.271579 b= 0.643306
Epoch: 1351 cost= 0.078330889 W= 0.270271 b= 0.652711
Epoch: 1401 cost= 0.078174531 W= 0.269042 b= 0.661557
Epoch: 1451 cost= 0.078036278 W= 0.267885 b= 0.669878
Epoch: 1501 cost= 0.077914089 W= 0.266797 b= 0.677704
Epoch: 1551 cost= 0.077806085 W= 0.265774 b= 0.685065
Epoch: 1601 cost= 0.077710636 W= 0.264812 b= 0.691988
Epoch: 1651 cost= 0.077626288 W= 0.263907 b= 0.6985
Epoch: 1701 cost= 0.077551730 W= 0.263055 b= 0.704624
Epoch: 1751 cost= 0.077485852 W= 0.262255 b= 0.710384
Epoch: 1801 cost= 0.077427655 W= 0.261502 b= 0.715801
Epoch: 1851 cost= 0.077376239 W= 0.260793 b= 0.720897
Epoch: 1901 cost= 0.077330798 W= 0.260127 b= 0.725689
Epoch: 1951 cost= 0.077290662 W= 0.259501 b= 0.730196
Optimization Finished!
cost= 0.0772559 W= 0.258923 b= 0.734354
 

 

 

posted on 2019-03-23 21:03  星光依旧  阅读(466)  评论(0编辑  收藏  举报

导航