TensorFlow基本计算单元与基本操作
在学习深度学习等知识之前,首先得了解著名的框架TensorFlow里面的一些基础知识,下面首先看一下这个框架的一些基本用法。
import tensorflow as tf
a = 3 # Python中普通的变量创建方式 # Create a variable.
w = tf.Variable([[0.5, 1.0]]) # tensorflow创建变量方式
x = tf.Variable([[2.0], [1.0]]) y = tf.matmul(w, x) # 矩阵内积 变量的操作
print(y) # tensor 里面没有具体的值 # variables have to be explicitly initialized before you can run Ops
# 初始化全局变量 w,x,y
init_op = tf.global_variables_initializer()
# 计算图
with tf.Session() as sess:
sess.run(init_op)
print(y.eval()) # 通过这种方式打印具体的值
得到的结果是:
Tensor("MatMul_2:0", shape=(1, 1), dtype=float32)
[[2.]]
通过上面可以看出,只是简单的一个矩阵的乘法,我们就写了这么多的代码,看起来比较麻烦,但是没有办法,要用这个框架就必须按照它的用法去用,但是在用这个框架来写深度学习里面的代码,那就不是很复杂了。上面的代码展示了TensorFlow框架的基本用法,导入库、变量定义、初始化变量、Session操作、然后才能进行具体的操作。
下面学习一下TensorFlow框架中一些函数的用法,可以和numpy库中的一些函数对比着学习。
from numpy import int32
# float32 在TensorFlow最好使用这种格式 # 创建都是0的矩阵
tf.zeros([3, 4], int32) # ==> [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]] tensor = tf.constant([[1, 2, 3], [4, 5, 6]])
# 矩阵格式相似
tf.zeros_like(tensor) # ==> [[0, 0, 0], [0, 0, 0]] # 矩阵元素都为1
tf.ones([2, 3], int32) # ==> [[1, 1, 1], [1, 1, 1]]
tf.ones_like(tensor) # ==> [[1, 1, 1], [1, 1, 1]] # Constant 1-D Tensor populated with value list.
# 创建一个常量,必须使用这种方式
tensor = tf.constant([1, 2, 3, 4, 5, 6, 7]) # => [1 2 3 4 5 6 7] # Constant 2-D tensor populated with scalar value -1.
# 创建二维矩阵常量
tensor = tf.constant(-1.0, shape=[2, 3]) # => [[-1. -1. -1.]
# [-1. -1. -1.]] # 创建间隔矩阵
tf.linspace(10.0, 12.0, 3, name="linspace") # => [ 10.0 11.0 12.0] # 'start' is 3
# 'limit' is 18
# 'delta' is 3
# tf.range(start, limit, delta)
tf.range(3, 18, 3)# ==> [3, 6, 9, 12, 15]
可以看出TensorFlow里面一些函数和numpy里面的用法差不多,下面看看TensorFlow中随机数的一些用法。
# 高斯分布的均值矩阵 指定均值和方差
norm = tf.random_normal([2, 3], mean=-1, stddev=4) # Shuffle the first dimension of a tensor
c = tf.constant([[1, 2], [3, 4], [5, 6]]) # shuffle操作
shuff = tf.random_shuffle(c) # Each time we run these ops, different results are generated
# 要执行这些操作的方法。推荐使用上面With结构
sess = tf.Session()
print(sess.run(norm))
print(sess.run(shuff))
运行得到的结果是
[[-2.4004993 5.356218 0.51297414]
[-4.353016 2.234075 -4.2948236 ]]
[[1 2]
[3 4]
[5 6]]
下面来看一个使用TensorFlow完成打印0到4之间的数字这样的一个小栗子,在原生Python中很简单,主要看看在TensorFlow中的用法。
# 打印0到4之间的的值
state = tf.Variable(0) # 初始化常量0
new_value = tf.add(state, tf.constant(1)) # 执行加1操作
update = tf.assign(state, new_value) # 将new_value赋给state # Session计算块
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
print(sess.run(state))
for _ in range(3):
sess.run(update)
print(sess.run(state))
得到的结果是
0
1
2
3
下面再来看看在创建变量时将numpy里面的格式转换为tensor格式,但是并不推荐使用这种方法
import numpy as np
a = np.zeros((3,3)) # 将numpy里面的格式转换为tensor格式,并不推荐使用这种方法
# 推荐使用上面创建变量的方法
ta = tf.convert_to_tensor(a)
with tf.Session() as sess:
print(sess.run(ta))
得到的结果是
[[0. 0. 0.]
[0. 0. 0.]
[0. 0. 0.]]
下面再来看看TensorFlow中占位符的用法
# 创建占位符,用的时候再具体赋值。
input1 = tf.placeholder(tf.float32)
input2 = tf.placeholder(tf.float32)
output = tf.multiply(input1, input2) # 矩阵元素相乘
with tf.Session() as sess:
print(sess.run([output], feed_dict={input1:[7.], input2:[2.]}))
得到的结果是
[array([14.], dtype=float32)]
总结,这篇博文包含了TensorFlow框架中一些常见的用法,但是肯定很多细节没有写全,只是写了一些大概的用法留作以后查看。
TensorFlow基本计算单元与基本操作的更多相关文章
- TensorFlow 基本变量定义,基本操作,矩阵基本操作
使用 TensorFlow 进行基本操作的实例,这个实例主要是使用 TensorFlow 进行了加法运算. 包括使用 constant 常量进行加法运算和使用 placeholder 进行变量加法运算 ...
- TensorFlow基本计算单元——变量
# -*- coding: utf-8 -*- import tensorflow as tf a = 3 # 创建变量 w = tf.Variable([[0.5, 1.0]]) #行向量 x = ...
- tensorflow学习笔记三----------基本操作
tensorflow中的一些操作和numpy中的很像,下面列出几个比较常见的操作 import tensorflow as tf #定义三行四列的零矩阵 tf.zeros([3,4]) #定义两行三列 ...
- TensorFlow简易学习[2]:实现线性回归
上篇介绍了TensorFlow基本概念和基本操作,本文将利用TensorFlow举例实现线性回归模型过程. 线性回归算法 线性回归算法是机器学习中典型监督学习算法,不同于分类算法,线性回归的输出是整个 ...
- TensorFlow从入门到实战资料汇总 2017-02-02 06:08 | 数据派
TensorFlow从入门到实战资料汇总 2017-02-02 06:08 | 数据派 来源:DataCastle数据城堡 TensorFlow是谷歌基于DistBelief进行研发的第二代人工智能学 ...
- 【干货】史上最全的Tensorflow学习资源汇总
欢迎大家关注我们的网站和系列教程:http://www.tensorflownews.com/,学习更多的机器学习.深度学习的知识! 作者:AI小昕 在之前的Tensorflow系列文章中,我们教大家 ...
- TensorFlow、numpy、matplotlib、基本操作
一.常量的定义 import tensorflow as tf #类比 语法 api 原理 #基础数据类型 运算符 流程 字典 数组 data1 = tf.constant(2,dtype=tf.in ...
- Tensorflow从入门到精通之——Tensorflow基本操作
前边的章节介绍了什么是Tensorflow,本节将带大家真正走进Tensorflow的世界,学习Tensorflow一些基本的操作及使用方法.同时也欢迎大家关注我们的网站和系列教程:http://ww ...
- Tensorflow基本操作理解
1. TensorsTensorFlow的数据中央控制单元是tensor(张量),一个tensor由一系列的原始值组成,这些值被形成一个任意维数的数组.一个tensor的列就是它的维度. 2. The ...
随机推荐
- codeforce617E-XOR and Favorite Number莫队+异或前缀和
传送门:http://codeforces.com/contest/617/problem/E 参考:https://blog.csdn.net/keyboarderqq/article/detail ...
- POJ-1222EXTENDED LIGHTS OUT-位运算枚举模板
传送门:http://poj.org/problem?id=1222 题意:开关灯问题,一幅开关的灯中,给出一种操作,使得灯全关掉,(操作一个开关,相邻的灯也会改变) 思路:利用位运算枚举第一行: # ...
- CF1025C Plasticine zebra 思维 字符串
Plasticine zebra time limit per test 1 second memory limit per test 256 megabytes input standard inp ...
- 计蒜客-第五场初赛-第二题 UCloud 的安全秘钥(简单)
每个 UCloud 用户会构造一个由数字序列组成的秘钥,用于对服务器进行各种操作.作为一家安全可信的云计算平台,秘钥的安全性至关重要.因此,UCloud 每年会对用户的秘钥进行安全性评估,具体的评估方 ...
- ubuntu下创建定时任务的两种方式及常见问题解决方案
创建定时任务的目的就是摆脱人为对程序重复性地运行. 0. 首先用下面的指令检查你是否安装crontab, crontab -l 如果本身就有的话,那么出现如下指令 LC_CTYPE="zh_ ...
- 你真的了解Grid布局吗?
Grid网格布局 概述:Grid将容器划分为一个个网格,通过任意组合不同的网格,做出你想想要的布局 Grid与flex布局相似,将整个Grid分为了容器与子项(格子) Grid容器的三个重要的概念: ...
- fastjson使用-- @JSONField使用(转)
@JSONField可以配置到字段和方法上,那不同的配置有什么不同呢?下面我们就来看看具体配置到不同的方法上. 我们在创建实体类的时候,都要求属性必须创建get和set方法,否则fastjson将不会 ...
- 如何使用Java访问双向认证的Https资源
本文的相关源码位于 https://github.com/dreamingodd/CA-generation-demo 0.Nginx配置Https双向认证 首先配置Https双向认证的服务器资源. ...
- fireFox模拟 post请求、上传插件,火狐浏览器中文postman插件
ApiPost是一个支持团队协作,支持模拟POST.GET.PUT等常见请求,并可直接生成文档的API调试.管理工具. 它拥有以下功能特性: 1.文档管理ApiPost不仅可以快速生成接口文档,还支持 ...
- android View的测量和绘制
本篇内容来源于android 群英传(徐易生著) 我写到这里,是觉得徐易生讲的确实很好, 另外加入了一些自己的理解,便于自己基础的提高. 另外参考:http://www.gcssloop.com/cu ...