一.简介

  TensorFlow是Google第二代机器学习和深度学习框架,支持CNN、RNN和LSTM算法,可以跨平台运行。TensorFlow底层部分是C++实现,具有较高的执行效率。支持不同的前端,包含Python和C++。

二.安装

  安装TensorFlow框架需要安装一些依赖工具,这些工具包括:

    1.html5lib-0.9999999

    2.bleach-1.5.0-py2.py3-none-any.whl

    3.Markdown-2.6.11-py2.py3-none-any.whl

    4.protobuf-3.6.1-cp36-cp36m-win_amd64.whl

    5.tensorboard-1.10.0-py3-none-any.whl

    6.tensorflow_tensorboard-1.5.1-py3-none-any.whl

  注意:在安装bleach-1.5.0-py2.py3-none-any.whl时会先下载html5lib-0.9999999.tar.gz包,就算是你已经安装好了html5lib,还是会继续下载,这时要是网络较差,就会一直下载失败,此时,可以这样执行安装,命令如下:pip install bleach-1.5.0-py2.py3-none-any.whl html5lib-0.9999999.tar.gz,记住,是tag.gz包,在windows下,文件扩展名gz不显示。  

  在上面提到的依赖安装完成后,执行安装tensorflow框架,安装成功如下:

  验证:

    

  在程序中引入tensorflow不提示无法识别!

三.代码实现

1 # -*- coding: utf-8 -*-
2 """
3 Created on Tue Oct 2 15:49:08 2018
4
5 @author: zhen
6 """
7
8 import tensorflow as tf
9 import numpy as np
10 from sklearn.datasets import fetch_california_housing
11
12 x = tf.Variable(3, name='x')
13 y = tf.Variable(4, name='y')
14
15 # 任何创建的节点会自动加入到默认的图中
16 print(x.graph is tf.get_default_graph())
17
18 # 创建新的图
19 graph = tf.Graph()
20
21 with graph.as_default():
22 # 只在with范围内有效
23 demo = tf.Variable(3)
24
25 print(demo.graph is graph)
26
27 demo2 = tf.Variable(3)
28 print(demo2.graph is graph)
29
30 # 创建常量
31 constant = tf.constant(3)
32
33 f = x * x * y + x * y + 1
34 f2 = f * constant
35
36 # 可以不分别对每个变量去进行初始化,在run运行时初始化
37 init = tf.global_variables_initializer()
38
39 with tf.Session() as sess:
40 init.run()
41 result = f.eval()
42 result2 = f2.eval()
43 print(result, result2)
44
45 f_result, f2_result = sess.run([f, f2])
46 print(f_result, f2_result)
47
48 # 获取数据集
49 housing = fetch_california_housing(data_home="C:/Users/zhen/.spyder-py3/data", download_if_missing=True)
50 # 获取x数据行数和列数
51 m, n = housing.data.shape
52 # 添加额外数据加入特征
53 housing_data_plus_bias = np.c_[np.ones((m, 1)), housing.data]
54 # 创建两个Tensorflow常量节点x和y,去持有数据和标签
55 x = tf.constant(housing_data_plus_bias, dtype=tf.float32, name='x')
56 y = tf.constant(housing.target.reshape(-1, 1), dtype=tf.float32, name='y')
57 # 矩阵操作
58 xt = tf.transpose(x)
59 # 计算最优解
60 theta = tf.matmul(tf.matmul(tf.matrix_inverse(tf.matmul(xt, x)), xt), y)
61 with tf.Session() as sess:
62 theta_value = theta.eval()
63 print(theta_value)

四.代码详解

  1.代码在执行时可能会报一下AVX警告【不影响程序正常执行】:

2020-01-13 09:46:26.930863: W C:\tf_jenkins\home\workspace\rel-win\M\windows\PY\36\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.
2020-01-13 09:46:26.931377: W C:\tf_jenkins\home\workspace\rel-win\M\windows\PY\36\tensorflow\core\platform\cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use AVX2 instructions, but these are available on your machine and could speed up CPU computations.

  这个警告意思是你安装的TensorFlow支持AVX/AVX2,但是没有编译,不能使用。使用AVX/AVX2可以提升你CPU的执行效率。一般出现这种情况是你安装TensorFlow时使用的是pip install tensorflow而不是源码安装。遇到这种情况可以在你的代码中添加一下程序指定日志级别,屏蔽警告信息:

import os
os.environ['TF_CPP_MIN_LOG_LEVEL']='2'

  2.fetch_california_housing

    加利福尼亚购房信息数据,这是一个开放的数据源,广泛使用在线性回归&逻辑回归算法的训练上。使用fetch_california_housing(data_home="C:/Users/zhen/.spyder-py3/data", download_if_missing=True)这行程序可以使用这个数据集。download_if_missing=True表示若data_home目录下不存在该数据,就直接下载该数据,若存在则直接加载此数据。

  3.tf.Variable() & tf.constant()

    使用tensorflow创建变量,variable是可变变量,constant是常量。

  4.eval()和run()的区别

    eval():将字符串对象转换为有效的表达式参与求值运算并返回计算结果。eval()也是启动计算的一种方式。基于tensorflow的基本原理,首先需要定义图,然后计算图,其中计算图的函数常见的有run()函数,如sess.run()。要注意的是,eval()只能用于tf.Tensor类对象,也就是有输出的Operation。对于没有输出的Operation,可以用run()或者Session.run(),Session.run()没有这个限制。

  5.np.ones & np.c_ & np.r_

    np.ones:创建一个全是1的n维数组,有三个参数:shape【指定返回数组的大小】、dtype【数组元素的类型,可以不指定,自动推演】、order【是否以内存中的C或Fortran连续顺序存储多维数据,可以不指定】。

    np.c_:按行连接两个矩阵,就是把两个矩阵按行进行拼接,要求行数一致。

    np.r_:按列连接两个矩阵,就是把两个矩阵按列进行拼接,要求列数一致。

  6.tf.transpose & tf.matmul

    tf.transpose:矩阵转置

    tf.matmul:矩阵相乘,与此类似的还有tf.multiply,tf.multiply表示矩阵对应元素相乘!

  7.tf.matrix_diag & tf.matrix_inverse

    tf.matrix_diag:输入一个向量,输出二维的对角矩阵。

    tf.matrix_inverse:输入一个矩阵,得到该矩阵的逆矩阵。需要矩阵中的数据为浮点数!

五.执行结果

  

六.备注

  离线包下载:https://pan.baidu.com/s/1DQdOViNreI9OjiGWLWHZ6g 提取码:ddfp

TensorFlow深度学习入门的更多相关文章

  1. 深度学习入门实战(二)-用TensorFlow训练线性回归

    欢迎大家关注腾讯云技术社区-博客园官方主页,我们将持续在博客园为大家推荐技术精品文章哦~ 作者 :董超 上一篇文章我们介绍了 MxNet 的安装,但 MxNet 有个缺点,那就是文档不太全,用起来可能 ...

  2. mnist手写数字识别——深度学习入门项目(tensorflow+keras+Sequential模型)

    前言 今天记录一下深度学习的另外一个入门项目——<mnist数据集手写数字识别>,这是一个入门必备的学习案例,主要使用了tensorflow下的keras网络结构的Sequential模型 ...

  3. (转) TensorFlow深度学习,一篇文章就够了

    TensorFlow深度学习,一篇文章就够了 2016/09/22 · IT技术 · TensorFlow, 深度学习 分享到:6   原文出处: 我爱计算机 (@tobe迪豪 )    作者: 陈迪 ...

  4. TensorFlow深度学习,一篇文章就够了

    http://blog.jobbole.com/105602/ 作者: 陈迪豪,就职小米科技,深度学习工程师,TensorFlow代码提交者. TensorFlow深度学习框架 Google不仅是大数 ...

  5. 问题集录--TensorFlow深度学习

    TensorFlow深度学习框架 Google不仅是大数据和云计算的领导者,在机器学习和深度学习上也有很好的实践和积累,在2015年年底开源了内部使用的深度学习框架TensorFlow. 与Caffe ...

  6. Python学习(二)——深度学习入门介绍

    课程二:深度学习入门 讲师:David (数据分析工程师) 这门课主要介绍了很多神经网络的基本原理,非常非常基础的了解. 零.思维导图预览:                一.深度神经网络 1.神经元 ...

  7. 给深度学习入门者的Python快速教程 - 番外篇之Python-OpenCV

    这次博客园的排版彻底残了..高清版请移步: https://zhuanlan.zhihu.com/p/24425116 本篇是前面两篇教程: 给深度学习入门者的Python快速教程 - 基础篇 给深度 ...

  8. 给深度学习入门者的Python快速教程 - numpy和Matplotlib篇

    始终无法有效把word排版好的粘贴过来,排版更佳版本请见知乎文章: https://zhuanlan.zhihu.com/p/24309547 实在搞不定博客园的排版,排版更佳的版本在: 给深度学习入 ...

  9. windows下Anaconda3配置TensorFlow深度学习库

    Anaconda3(python3.6)安装tensorflow Anaconda3中安装tensorflow3是非常简单的,仅需通过 pip install tensorflow 测试代码: imp ...

随机推荐

  1. iOS-常用的两个弹簧动画pop

    POPSpringAnimation *popAna = [POPSpringAnimation animationWithPropertyNamed:kPOPLayerPosition]; popA ...

  2. 【2019北京集训3】逻辑 树剖+2-sat

    题目大意:有一颗有$m$个叶子节点的二叉树. 对于叶子节点$i$,$x[i]=(a[i]\ xor\ V_{p[i]})or(b[i]\ xor\ V_{q[i]})$ 对于非叶子节点$i$,$x[i ...

  3. 利用history.pushState()实现页面无刷新更新

    本来是在研究vue-router如何记录滚动位置,点返回的时候还是回到原来的位置,看到有人说的history.state存了一个值,才把history研究一下,发现 history.pushState ...

  4. 删除.svn 脱离svn版本控制器

    1.for /r . %%a in (.) do @if exist "%%a\.svn" rd /s /q "%%a\.svn" 复制到记事本,将记事本保存为 ...

  5. PyCharm的基本快捷键和配置简介

    快捷键 1.编辑(Editing)Ctrl + Space 基本的代码完成(类.方法.属性)Ctrl + Alt + Space 快速导入任意类Ctrl + Shift + Enter 语句完成Ctr ...

  6. 通过清华大学镜像下载Android源码并编译源码

    之前看源码都是在Windows下用SourceInsight看,虽然达到了研究源码的效果,但终究还是有遗憾...趁着周末,准备在Ubuntu虚拟机上下载编译源码. 之前下源码时,有了解一些Androi ...

  7. 一文了解JAVA虚拟机的重要组成

    JVM是JAVA平台的重要组成之一,因涉及知识点太多,故从以下几个方面对JVM进行浅层面的介绍,如果需要深入理解,推荐学习机械工业出版社的<深入理解JAVA虚拟机>. 请尊重作者劳动成果, ...

  8. Webservice和EJB的区别

    1. WebService可以说是跨平台的,因为它采用的是XML技术,说穿了就是把你的请求按照该WebServece的标准将参数传过去,然后服务器返回结果,当然了最重要的是参数的传递和结果的返回都是采 ...

  9. ajaxFileUpload带参数提交(亲测可用)

    使用ajaxFileUpload上传文件时,有时需要带参数提交,网上有很多资料说使用data,但其实要使用data带参数是需要修改的,否则后台是获取不到的. 分析原因: ajaxFileUpload为 ...

  10. 实验吧 burpsuie拦截修改请求

    Forbidden 解题链接:http://ctf5.shiyanbar.com/basic/header/ 把language改成zh-hk,go,flag到手 Forms 题目地址:http:// ...