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= ...
随机推荐
- 【忍者算法】从生活到代码:解密链表大数相加的美妙算法|LeetCode第2题"两数相加"
从生活到代码:解密链表大数相加的美妙算法 从超市收银说起 想象你是一个超市收银员,正在计算两位顾客的购物总和.每位顾客的商品都按照从个位到高位的顺序摆放(比如54元就是先放4元商品,再放50元商品). ...
- Android高版本Service在后台一分钟被杀死
最近公司出现了一个Bug,Service在后台写log时候一分钟左右被杀死,或者运行一会就被杀死了,上网搜了一下原来是Android高版本为了保护电量,流量什么的,会在后台杀死这些Service,现在 ...
- 微信企业付款到零钱(Java版)
订阅专栏1.开通条件. 商户注册超过90天且,连续30天有交易,可以每天支付1元来刷,目前测试可行.随后在微信商户平台 - 产品管理自动开启,然后需要申请. 疑问: 话说是要有公众号appid才行,但 ...
- DeFi(去中心化金融)的硬核知识
1. DeFi流动性挖矿:躺着赚利息的"矿工" 简单来说,流动性挖矿就像你往银行存钱赚利息,但这里存的是加密货币,利息更高,还能随时提现.比如你往Uniswap这样的去中心化交 ...
- 少样本学习实战:Few-Shot Prompt设计
让AI用最少样本学会"举一反三" 想象一下,你要教一个外星人认识地球上的动物.如果只给它看三张哈士奇的照片,它可能会认为所有四条腿的动物都叫"哈士奇".这就是A ...
- Python脚本 | 提取pdf页面为jpg
功能: 提取pdf文件中的每一页,输出为jpg文件 以markdown语法写入文本文件 将该文本复制到剪贴板 # python 3.10 # ! 运行在 conda-myv虚拟环境 import fi ...
- C++基础学习--随记
博客地址:https://www.cnblogs.com/zylyehuo/ 参考"C++基础与深度解析" 一.预备知识 // c++常用工具 /usr/bin/time //查看 ...
- docker clean images
docker ps | grep portal | awk '{print $2}' | cut -d ":" -f3 used=`docker ps | grep portal ...
- Linux reboot全过程
一.版本说明嵌入式Linux 下面的reboot命令看似简单,但出问题时定位起来发现别有洞天.下面就按在shell下执行reboot命令之后程序的执行过程进行解析.Busybox:1.23.2 ...
- Oracle DB 关于CONNECT、RESOURCE 和DBA 角色权限
授予角色的语法: grant <object/system privilege> to <role name>; 一般情况下,在新建数据库用户后,都会习惯性的给用户授权CONN ...