zoukankan      html  css  js  c++  java
  • 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:Users45014>conda config --add
    channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/

    (tensorflow) C:Users45014>conda config --set show_channel_urls yes

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

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

    (tensorflow) C:Users45014>conda create -n tensorflow python=3.5

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

     

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

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

    (tensorflow) C:Users45014>activate tensorflow

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

     安装cpu版本的Tensorflow:

    (tensorflow) C:Users45014>pip install --upgrade --ignore-installed tensorflow

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

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

    python -m pip install --upgrade pip

    1.3  命令行基本测试

    命令行测试代码如下:

    (tensorflow) C:Users45014>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
     

     

  • 相关阅读:
    SQL时间戳的使用
    Java中利用MessageFormat对象实现类似C# string.Format方法格式化
    XML中PCDATA与CDATA的区别
    树行控件TreeView 在WinForm下 怎么实现重命名功能
    PHP+MySQL存储数据出现中文乱码的问题
    C#创建一个Windows Service
    SQL2008配置管理工具服务显示远程过程调用失败
    C#如何以管理员身份运行程序
    在APACHE服务器上的访问方式上去除index.php
    开发winform程序,在拖拽控件大小时,VS会卡死
  • 原文地址:https://www.cnblogs.com/taoweizhong/p/10585570.html
Copyright © 2011-2022 走看看