ref:CS 20SI: Tensorflow for Deep Learning Research_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili
我在b站学Tensorflow😂
写在前面的碎碎念:
打算在简书上记录一些自己的观影、读书的体验,和学习的收获经验。
第一篇献给我敬仰的TensorFlow~希望project一切顺利!
(还不太会用简书,以后慢慢熟练,争取有好看的排版(๑•̀ㅂ•́)و✧)
(ctl+B竟然不能粗体 惊了!)
前言:
用tf在搭网络做项目,之前一直都是用啥学啥,一开始还行比较快;但是到了后来,需要refine的时候不清楚底层原理还是难办。
这系列的视频我个人认为说得很不错,相比一些网上的博客教程,更生动好动,推荐!
(主要记录一些我觉得需要注意的地方,和看视频的时候我感觉以后又补充上来的点,因此,这篇文估计不会对除我以外的其它人有太多帮助😂)
终于开始正文!
关于tf中的乘法
视频中用的
弹幕说是已经淘汰了,遂Google,结果如下:
tf.multiply(x, y, name=None)
Args:
x: A `Tensor`. Must be one of the following types: `half`, `float32`, `float64`, `uint8`, `int8`, `uint16`, `int16`, `int32`, `int64`, `complex64`, `complex128`.
y: A `Tensor`. Must have the same type as `x`.(注意,这里强调了这两个相乘的数要有相同的数据类型,不然就会报错)
Returns x * y element-wise.
tf.matmul()将矩阵a乘以矩阵b,生成a * b。
格式: tf.matmul(a, b, transpose_a=False, transpose_b=False, adjoint_a=False, adjoint_b=False, a_is_sparse=False, b_is_sparse=False, name=None)
参数:
a: 一个类型为 float16, float32, float64, int32, complex64, complex128 且张量秩 > 1 的张量。
b: 一个类型跟张量a相同的张量。
transpose_a: 如果为真, a则在进行乘法计算前进行转置。
transpose_b: 如果为真, b则在进行乘法计算前进行转置。
adjoint_a: 如果为真, a则在进行乘法计算前进行共轭和转置。
adjoint_b: 如果为真, b则在进行乘法计算前进行共轭和转置。
a_is_sparse: 如果为真, a会被处理为稀疏矩阵。
b_is_sparse: 如果为真, b会被处理为稀疏矩阵。
name: 操作的名字(可选参数)
返回值: 一个跟张量a和张量b类型一样的张量且最内部矩阵是a和b中的相应矩阵的乘积。
注意:
(1)输入必须是矩阵(或者是张量秩 >2的张量,表示成批的矩阵),并且其在转置之后有相匹配的矩阵尺寸。
(2)两个矩阵必须都是同样的类型,支持的类型如下:float16, float32, float64, int32, complex64, complex128。
引发错误:
ValueError: 如果transpose_a 和 adjoint_a, 或 transpose_b 和 adjoint_b 都被设置为真
sess.run(op3) session运行op3这个节点的时候会反向找所需要的resource,
所以,看起来只需要sess.run() 中只需要填最后一个node就行(当然,括号里也可以放整个Graph,不过具体怎么操作 还不太清楚)
多个相互分离的model需要多个session
每个session都会尝试抢走所有GPU资源
总结:
1. 主要内容:session graph