人工智能-深度学习(2)TensorFlow安装及基本使用(学习笔记)
一、TensorFlow 简介
TensorFlow 是 Google 开源的一款人工智能学习系统。为什么叫这个名字呢?
Tensor 的意思是张量,代表 N 维数组;Flow 的意思是流,代表基于数据流图的计算。
把 N 维数字从流图的一端流动到另一端的过程,就是人工智能神经网络进行分析和处理的过程。
话说在 Android 占领了移动端后,Google开源了 TensorFlow,希望占领 AI 端。
TF的特点是可以支持多种设备,大到 GPU、CPU,小到平板和手机都可以跑起来 TF。
而且 TF 的使用很方便,几行代码就能开始跑模型,这让神经网络的入门变得非常简单。
二、TensorFlow 的安装
因为精力有限,此处只介绍在windows10平台上的安装,其他平台的安装方法google上一抓一大把。
我安装的方法是用最简单粗暴的方法:Anaconda
1.在Anaconda官网上下载64位
(注意自己的python的版本)
在安装过程注意的一点是勾选如下图中的两个选项,其他的默认即可:
2.安装成功后打开Anaconda,切换到environment功能栏,可以看到很多的工具包,搜索Tensorflow,勾选上,然后点击Apply,进行安装即可。
三、TensorFlow的基础运算
在搞神经网络之前,先让我们把 TensorFlow 的基本运算,也就是加减乘除搞清楚。
首先,TensorFlow 有几个概念需要进行明确:
图(Graph):用来表示计算任务,也就我们要做的一些操作。
会话(Session):建立会话,此时会生成一张空图;在会话中添加节点和边,形成一张图,一个会话可以有多个图,通过执行这些图得到结果。
如果把每个图看做一个车床,那会话就是一个车间,里面有若干个车床,用来把数据生产成结果。
Tensor:用来表示数据,是我们的原料。
变量(Variable):用来记录一些数据和状态,是我们的容器。
- feed和fetch:可以为任意的操作(arbitrary operation ) 赋值或者从其中获取数据。相当于一些铲子,可以操作数据。
形象的比喻是:把会话看做车间,图看做车床,里面用 Tensor 做原料,变量做容器,feed 和 fetch 做铲子,把数据加工成我们的结果。
创建图和运行图
下面我们创建一个图,并在 Session 中执行它,不用担心看不懂,每句代码都会注释,只有有编程基础,都能 OK:
#引入TensorFlow包
import tensorflow as tf
#创建一个常量v1,它是1*2的矩阵
v1=tf.constant([[2,3]])
#创建一个常量v2,它是2*1的矩阵
v2=tf.constant([[2],[3]])
#创建一个矩阵乘法,这里要注意的是,创建了乘法后,是不会立即执行的,要在会话中执行才行
product=tf.matmul(v1,v2)
#打印,得到的不是乘法的结果,而是得到乘法本身
print(product)
#定义一个会话
sess=tf.Session()
#运行乘法,得到结果
result=sess.run(product)
#打印结果
print(result)
#关闭会话
sess.close()
上面就是用 TensorFlow 进行了一个最简单的矩阵乘法。
创建一个变量,并用 for 循环对变量进行赋值操作
#创建一个变量num
num = tf.Variable(0,name = "count")
#创建一个加法操作,把当前的数字加10
new_value = tf.add(num,10)
#创建一个赋值操作,将new_value的值赋值给num
op = tf.assign(num,new_value)
#使用这种写法,在运行完毕以后,会话自动关闭
with tf.Session() as sess:
#初始化变量
sess.run(tf.global_variables_initializer())
#打印num的初始值
print(sess.run(num))
#创建一个for循环,每次给num+10,并打印出来
for i in range(5):
sess.run(op)
print(sess.run(num))
可以看到,除了变量创建稍微麻烦一些和必须建立 session 来运行,其他的操作基本和普通Python一样。
通过 feed 设置 placeholder 的值
有的时候,我们会在声明变量的时候不赋值,计算的时候才进行赋值,这个时候 feed 就派上用场了
#创建一个变量占位符input1
input1 = tf.placeholder(tf.float32)
input2 = tf.placeholder(tf.float32)
#创建一个乘法操作,把input1和input2相乘
new_value=tf.multiply(input1,input2)
#使用这种写法,运行完毕后,会话会自动关闭
with tf.Session() as sess:
#打印new_value的值,在运算时,用feed设置两个输入的值
print(sess.run(new_value,feed_dict={input1:23.0,input2:11.0}))
人工智能-深度学习(2)TensorFlow安装及基本使用(学习笔记)的更多相关文章
- 深度学习之TensorFlow安装与初体验
深度学习之TensorFlow安装与初体验 学习前 搞懂一些关系和概念 首先,搞清楚一个关系:深度学习的前身是人工神经网络,深度学习只是人工智能的一种,深层次的神经网络结构就是深度学习的模型,浅层次的 ...
- TF之NN:matplotlib动态演示深度学习之tensorflow将神经网络系统自动学习并优化修正并且将输出结果可视化—Jason niu
import tensorflow as tf import numpy as np import matplotlib.pyplot as plt def add_layer(inputs, in_ ...
- 学习笔记TF045:人工智能、深度学习、TensorFlow、比赛、公司
人工智能,用计算机实现人类智能.机器通过大量训练数据训练,程序不断自我学习.修正训练模型.模型本质,一堆参数,描述业务特点.机器学习和深度学习(结合深度神经网络). 传统计算机器下棋,贪婪算法,Alp ...
- 02基于python玩转人工智能最火框架之TensorFlow人工智能&深度学习介绍
人工智能之父麦卡锡给出的定义 构建智能机器,特别是智能计算机程序的科学和工程. 人工智能是一种让计算机程序能够"智能地"思考的方式 思考的模式类似于人类. 什么是智能? 智能的英语 ...
- 深度学习篇——Tensorflow配置(傻瓜安装模式)
前言 如果你是一个完美主义者,那么请绕过此文,请参考<深度学习篇——Tensorflow配置(完美主义模式)> 安装 pip install tensorflow ok,只要不报错,安装就 ...
- 深度学习(TensorFlow)环境搭建:(一)硬件选购和主机组装
一.硬件采购 近年来,人工智能AI越来越多被人们所了解,尤其是AlphaGo的人机围棋大战之后,机器学习的热潮也随之高涨.最近,公司采购了几批设备,通过深度学习(TensorFlow)来研究金融行业相 ...
- 人工智能深度学习框架MXNet实战:深度神经网络的交通标志识别训练
人工智能深度学习框架MXNet实战:深度神经网络的交通标志识别训练 MXNet 是一个轻量级.可移植.灵活的分布式深度学习框架,2017 年 1 月 23 日,该项目进入 Apache 基金会,成为 ...
- 金玉良缘易配而木石前盟难得|M1 Mac os(Apple Silicon)天生一对Python3开发环境搭建(集成深度学习框架Tensorflow/Pytorch)
原文转载自「刘悦的技术博客」https://v3u.cn/a_id_189 笔者投入M1的怀抱已经有一段时间了,俗话说得好,但闻新人笑,不见旧人哭,Intel mac早已被束之高阁,而M1 mac已经 ...
- 人工智能深度学习Caffe框架介绍,优秀的深度学习架构
人工智能深度学习Caffe框架介绍,优秀的深度学习架构 在深度学习领域,Caffe框架是人们无法绕过的一座山.这不仅是因为它无论在结构.性能上,还是在代码质量上,都称得上一款十分出色的开源框架.更重要 ...
- 深度学习之TensorFlow构建神经网络层
深度学习之TensorFlow构建神经网络层 基本法 深度神经网络是一个多层次的网络模型,包含了:输入层,隐藏层和输出层,其中隐藏层是最重要也是深度最多的,通过TensorFlow,python代码可 ...
随机推荐
- Md5扩展攻击的原理和应用
*本文原创作者:Guilty and Innocent,本文属FreeBuf原创奖励计划,未经许可禁止转载 做CTF题目的过程中遇到了md5扩展攻击,参考了几篇文章,感觉写的都有些小缺陷,再发一篇文章 ...
- Hibernate复习之Hibernate基本介绍
众所周知.眼下流行的面向对象的对象关系映射的Java持久层框架有MyBatis和Hibernate.他们都是对象关系映射ORM. 解决的主要问题就是对象-关系的映射.域模型和关系模型都分别建立在概念模 ...
- BC一周年B
#include <cstdio> #include <iostream> #include <algorithm> #include <queue> ...
- 微信小程序之 Classify(商品属性分类)
1.项目目录 2.逻辑层 broadcast.js // pages/broadcast/broadcast.js Page({ /** * 页面的初始数据 */ data: { firstIndex ...
- JS地区四级级联
<script type="text/javascript" src="../js/jsAddress.js"></script> &l ...
- 配置 Apache 服务器禁止所有非法域名 访问自己的服务器
.http2..1以前: 第一种 直接拒绝访问 打开 httpd.conf 文件,将一下配置追加到文件最后. <pre name="code" class="htm ...
- adb端口被占用情况下如何杀掉进程
1.CMD命令窗口输入:adb nodaemon server .然后就会提示你哪个端口被占用了. 2.输入netstat -ano | findstr "5037" .然后会弹出 ...
- hdoj-2090-算菜价(水题)
算菜价 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submis ...
- 5.eclipse 自带的jdk没有源码,改了它
其实JDK源码在安装的时候已经放在了jdk所在的目录下,只是eclipse使用 了不带有源码的jre,导致没找到对应的源码,点击 Window->Perference->Java-> ...
- javaScript复制粘贴
1.clipboard.js 实现了纯 JavaScript (无 Flash)的浏览器内容复制到系统剪贴板的功能.可以在浏览器和 Node 环境中使用.支持 Chrome 42+.Firefox 4 ...