TensorFlow 基础 (03)
项目再忙碌, 还是要抽出时间来学习的.
最近到整一些数据清洗小工具, 数据导入数据库工具等... 有种感觉是, 之前我做分析师的时候, 啥工具都没有, 全部我自己造, 数据表整理, 业务整理, 建库建表, 自己写 web , 前端(数据展示) ... 反而是我都自己干完了, 而且配置也不全; 而现在, 配置全了, 有后台前台展示工具 BI , 后台有 ETL 团队, 我自己也能开发... 结果现在反而效率降低了... 总是各种问题...真是感到, 还不是自己弄...所有的东西都掌握到自己的手里, 不至于这样东搞西搞, 难受的一批...
继续学习一波, 不管了. 这篇来练习 张量 tensor 的创建.
从Array, List 对象创建 Tensor
Python 的这些 "容器" 或者数据结构, 用的最多的必然是 List 了, 各种骚操作哇. 然后做数据分析处理, Pandas 啥的, 用的基本的都是 Numpy 的 ndarray 数组. 因此, 二者直接转为 Tensor 是非常自然的.
通过 tf.convert_to_tensor ( ) 即可将 array 和 list 转为 张量.
import numpy as np
import tensorflow as tf
lst = [1, 2, 3, 4]
print(tf.convert_to_tensor(lst))
arr = np.array([[1, 2, 3.14], [4, 5, 6]])
print(tf.convert_to_tensor(arr))
tf.Tensor([1 2 3 4], shape=(4,), dtype=int32)
tf.Tensor(
[[1. 2. 3.14]
[4. 5. 6. ]], shape=(2, 3), dtype=float64)
Numpy 浮点数, 默认使用 float 64 精度来存储数据, 即转为 Tensor 类型为 tf.float64. 可以通过 tf.cast( ) 转换为 tf.float32 等.
可以发现, tf.constant( ) 和 tf.convert_to_tensor( ) 都能讲 array 或 list 转为 tensor. 版本问题吧, 就是取名的差别.
创建 全 0 或 全 1 张量
通过 tf.zeros( ) 和 tf.ones( ) 来创建.
这种场景几乎都是参数初始化. 比如线性变换 \(y = Wx + b\) ,将 权值矩阵 W 初始化全 1 的矩阵, 偏置 b 全为 0 向量.
tf.zeros([]), tf.ones([])
(<tf.Tensor: id=3, shape=(), dtype=float32, numpy=0.0>,
<tf.Tensor: id=4, shape=(), dtype=float32, numpy=1.0>)
创建全为 0, 全1 的向量, 参数 [ ] 用来指定 shape.
print(tf.zeros([1]))
print(tf.ones([1]))
创建全 0 或 1 的矩阵.
# 2x3 的矩阵, 值全为 0
print(tf.zeros([2,3]))
# 2x3 的矩阵, 值全为 1
print(tf.ones([2,3]))
tf.Tensor(
[[0. 0. 0.]
[0. 0. 0.]], shape=(2, 3), dtype=float32)
tf.Tensor(
[[1. 1. 1.]
[1. 1. 1.]], shape=(2, 3), dtype=float32)
创建自定义数值张量
通过 tf.fill(shape, value) 可以创建自定义 value 的张量.
# 创建 shape 为 0, 值为 -1 的 tensor (标量)
print(tf.fill([], -1))
# 创建 shape 为 5, 值为 -1 的 tensor (向量)
print(tf.fill([1], -1))
# 创建 shape 为 (3, 3) 值为 666 的 tensor (矩阵)
print(tf.fill([3,3], 666))
# 创建 shape 为 (3, 2, 2) 值为 999 的 tensor (3维张量)
print(tf.fill([3, 2, 2], 999))
tf.Tensor(-1, shape=(), dtype=int32)
tf.Tensor([-1], shape=(1,), dtype=int32)
tf.Tensor(
[[666 666 666]
[666 666 666]
[666 666 666]], shape=(3, 3), dtype=int32)
tf.Tensor(
[[[999 999]
[999 999]]
[[999 999]
[999 999]]
[[999 999]
[999 999]]], shape=(3, 2, 2), dtype=int32)
创建概率分布的 Tensor
通过 tf.random.normal( ) 和 tf.random.uniform () 来生成最为常见的 高斯分布 和 均匀分布.
场景一般是用来做测试和辅助网络训练. 如在卷积神经网络中, 卷积核张量 \(W\) 初始化为高斯分布, 则非常有网络参数的训练. 再如在 GAN (对抗性生成网络) 中, 隐变量 z 一般采样自 均匀分布.
tf.random.normal (shape, mean=0.0, stddev=1.0) 即 \(N(\mu, \sigma)\)
tf.random.uniform(shape, minval=0, maxval=None, dtype=tf.float32) 均匀分布哇.
# 生成 2 x 3 标准(0,1) 高斯分布的矩阵
print(tf.random.normal([2,3]))
# 生成 2 x 3 均值为 1, 标准差为 2 的高斯分布
print(tf.random.normal([2,3], 1, 2))
# 生成 1 x 3 的 [1, 10] 均匀分布向量
print(tf.random.uniform([1,3], 1, 10))
# 生成 2 x 2 的 [1, 100] 整形, 且为均匀分布 的矩阵
print(tf.random.uniform([2,2], 1, 100, dtype=tf.int32))
tf.Tensor(
[[ 0.2804165 -0.08695418 -0.243429 ]
[ 1.5735217 0.91768235 1.2737458 ]], shape=(2, 3), dtype=float32)
tf.Tensor(
[[-0.5737424 -0.19066274 -0.9355514 ]
[ 4.6325927 0.62451375 -0.69557965]], shape=(2, 3), dtype=float32)
tf.Tensor([[7.61883 2.2297285 6.51745 ]], shape=(1, 3), dtype=float32)
tf.Tensor(
[[20 23]
[67 11]], shape=(2, 2), dtype=int32)
创建序列张量
通过 tf.range() 来实现序列. 其中 tf.range(limit, delta=1)
# 跟 Python 的 range() 函数是一样的
print(tf.range(10))
print(tf.range(5, 10))
print(tf.range(1, 10, 2))
tf.Tensor([0 1 2 3 4 5 6 7 8 9], shape=(10,), dtype=int32)
tf.Tensor([5 6 7 8 9], shape=(5,), dtype=int32)
tf.Tensor([1 3 5 7 9], shape=(5,), dtype=int32)
小结
- tf.constant() 和 tf.convert_to_tensor() 方法可将 array 和 list 转为 tensor
- tf.zeros() 和 tf.ones() 可用来生成自定义 shap , 值全为 0 或 1 的张量
- 自定义值的张量, 则可以通过 tf.fill() 来实现
- tf.random.normal( ) 和 tf.random.uniform () 来生成最为常见的 高斯分布 和 均匀分布.
- tf.range() 来生成序列的张量, 跟Python是一样的用法哦.
时间有限, 先到这了, 即便碎片化学习, 也是要贵在坚持, 持之以恒, 每天进步一点点.
TensorFlow 基础 (03)的更多相关文章
- javaSE基础03
javaSE基础03 生活中常见的进制:十进制(0-9).星期(七进制(0-6)).时间(十二进制(0-11)).二十四进制(0-23) 进制之间的转换: 十进制转为二进制: 将十进制除以2,直到商为 ...
- javascript基础03
javascript基础03 1. 算术运算符 后增量/后减量运算符 ++ ,-- 比较运算符 ( >, <, >=, <=, ==, !=,===,!== ) 逻辑运算符( ...
- TensorFlow基础
TensorFlow基础 SkySeraph 2017 Email:skyseraph00#163.com 更多精彩请直接访问SkySeraph个人站点:www.skyseraph.com Over ...
- TensorFlow基础笔记(0) 参考资源学习文档
1 官方文档 https://www.tensorflow.org/api_docs/ 2 极客学院中文文档 http://www.tensorfly.cn/tfdoc/api_docs/python ...
- TensorFlow基础笔记(3) cifar10 分类学习
TensorFlow基础笔记(3) cifar10 分类学习 CIFAR-10 is a common benchmark in machine learning for image recognit ...
- 086 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 03 面向对象基础总结 01 面向对象基础(类和对象)总结
086 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 03 面向对象基础总结 01 面向对象基础(类和对象)总结 本文知识点:面向对象基础(类和对象)总结 说明 ...
- TensorFlow基础剖析
TensorFlow基础剖析 一.概述 TensorFlow 是一个使用数据流图 (Dataflow Graph) 表达数值计算的开源软件库.它使 用节点表示抽象的数学计算,并使用 OP 表达计算的逻 ...
- day33-线程基础03
线程基础03 6.用户线程和守护线程 用户线程:也叫工作线程,当线程的任务执行完或者通知方法结束.平时用到的普通线程均是用户线程,当在Java程序中创建一个线程,它就被称为用户线程 守护线程(Daem ...
- 05基于python玩转人工智能最火框架之TensorFlow基础知识
从helloworld开始 mkdir mooc # 新建一个mooc文件夹 cd mooc mkdir 1.helloworld # 新建一个helloworld文件夹 cd 1.helloworl ...
- tensorflow基础篇-1
1.使用占位符和变量 import tensorflow as tf import numpy as np #-----创建变量并初始化----------- def first(): my_var= ...
随机推荐
- 发那科FANUC机器人A06B-0652-B212电机维修基本流程
发那科FANUC机器人以其卓越的性能和可靠性赢得了广泛的认可.然而,就像其他任何机械设备一样,长时间的运行和复杂的工作环境都可能使伺服电机面临维修的需求.为了确保您的发那科FANUC机器人A06B-0 ...
- java list集合去重的两种方式
- autMan奥特曼机器人-内置wx机器人的相关说明
内置wx机器人的相关说明 内置wxbot机器人,经常有人说在群内无回复,做以下几个工作: 给群命名 通过机器人微信APP将此群加入到通讯录 重启autMan 内置微信机器人已经支持群名设置 例如转发时 ...
- Flink - [02] 安装部署(Standalone)
一.准备 1.角色规划 Flink Standalone 角色规划 节点名称 node01 node02 node03 master ○ worker ○ ○ zookeeper ○ ○ ...
- Windows下快捷方式 (*.lnk) 的使用技巧整理
日常应用中,许多软件都会在安装过程最后一步添加多个命令,针对其应用创建快捷方式发送到桌面以及快速启动栏和开始菜单,供人们快速找到并打开.在我的使用习惯中也会将诸多常用的应用右键-发送到-桌面快捷方式来 ...
- Processing多窗口程序范例(三)
再来一例~另一种叠加方式呈现...看图: 程序 主程序: package syf.demo.multiwindow3; import processing.core.PApplet; import p ...
- 【BUUCTF】Ping Ping Ping
[BUUCTF]Ping Ping Ping (命令执行绕过总结) 题目来源 收录于:BUUCTF GXYCTF2019 题目描述 提示较为明确,get方法传参127.0.0.1后结果如下 比较容易想 ...
- vue-element-admin安装趟坑
1.下载源码 2.执行 npm install --registry=https://registry.npm.taobao.org 如果遇到"git ls-remote -h -t&quo ...
- AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
引言 在当今这个数据爆炸的时代,信息的快速存储与高效检索已经成为技术领域的核心挑战.随着人工智能(AI)和机器学习(ML)的迅猛发展,向量存储和相似性搜索技术逐渐崭露头角,成为处理海量数据的利器.对于 ...
- leaflet生成地图封装成jquery插件使用
公司业务里一直都有使用leaflet地图插件来做地图展示.绘图等操作.公司有个项目已经有好几年了,由于项目原因一直在使用,今年由于google 地图 api过期,导致已经使用的地图无法加载.我作为现在 ...