Tensorflow中multiply()函数与matmul()函数的用法区别
1.tf.multiply()函数:矩阵对应元素相乘
官网定义:
- multiply(x,y,name=None)
参数:
x: 一个类型为:half, float32, float64, uint8, int8, uint16, int16, int32, int64, complex64, complex128的张量。
y: 一个类型跟张量x相同的张量。
注意:
(1)该函数实现的是元素级别的相乘,也就是两个相乘的数元素各自相乘,而不是矩阵乘法
(2)两个相乘的数必须是相同的类型,否则会报错。
举例说明:
- import tensorflow as tf
- # 1.数和矩阵相乘
- x = tf.constant([[1,2,3],[2,3,4],[3,4,5]])
- y1 = tf.constant(2)
- xy1 = tf.multiply(x,y1)
- # 2.两个矩阵对应元素相乘
- x = tf.constant([[1,2,3],[2,3,4],[3,4,5]])
- y2 = tf.constant([[1,1,1],[2,2,2],[3,3,3]])
- xy2 = tf.multiply(x,y2)
- # 3.元素类型不一样,报错
- # x = tf.constant([[1,2,3],[2,3,4],[3,4,5]])
- # y3 = tf.constant([[1.0,1.0,1.0],[2.0,2.0,2.0],[3.0,3.0,3.0]])
- # xy3 = tf.multiply(x,y3)
- with tf.Session() as sess:
- sess.run(tf.global_variables_initializer())
- print('xy1 =\n',sess.run(xy1))
- print('xy2 =\n',sess.run(xy2))
- # print('xy3 =\n',sess.run(xy3))
运行结果:
- xy1 =
- [[ 2 4 6]
- [ 4 6 8]
- [ 6 8 10]]
- xy2 =
- [[ 1 2 3]
- [ 4 6 8]
- [ 9 12 15]]
2.tf.matmul()函数:矩阵乘法
官网定义:
- 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会被处理为稀疏矩阵。
返回值: 一个跟张量a和张量b类型一样的张量且最内部矩阵是a和b中的相应矩阵的乘积。
举例说明:
- import tensorflow as tf
- x = tf.constant([[1,2,3],
- [2,3,4],
- [3,4,5]])
- y = tf.constant([[1,2,3],
- [1,2,3],
- [1,2,3]])
- xy = tf.matmul(x,y)
- with tf.Session() as sess:
- sess.run(tf.global_variables_initializer())
- print('xy1 =\n',sess.run(xy))
运行结果:
- xy =
- [[ 6 12 18]
- [ 9 18 27]
- [12 24 36]]
3.multiply()和matmul()对比
举例说明:
- import tensorflow as tf
- x = tf.constant([[1,2,3],
- [2,3,4],
- [3,4,5]])
- y1 = tf.constant([[1,2,3],
- [1,2,3],
- [1,2,3]])
- y2 = tf.constant([[1,2,3],
- [1,2,3],
- [1,2,3]])
- z1 = tf.multiply(x,y1) # 对应元素相乘
- z2 = tf.matmul(x,y2) # 矩阵相乘
- with tf.Session() as sess:
- sess.run(tf.global_variables_initializer())
- print('z1 =\n',sess.run(z1))
- print('z2 =\n',sess.run(z2))
运行结果:
- z1 =
- [[ 1 4 9]
- [ 2 6 12]
- [ 3 8 15]]
- z2 =
- [[ 6 12 18]
- [ 9 18 27]
- [12 24 36]]
Tensorflow中multiply()函数与matmul()函数的用法区别的更多相关文章
- SQL语句中order_by_、group_by_、having的用法区别
order by 从英文里理解就是行的排序方式,默认的为升序. order by 后面必须列出排序的字段名,可以是多个字段名. group by 从英文里理解就是分组.必须有“聚合函数”来配合才能使用 ...
- Tensorflow中保存模型时生成的各种文件区别和作用
假如我们得到了如下的checkpoints, 上面的文件主要可以分成三类:一种是在保存模型时生成的文件,一种是我们在使用tensorboard时生成的文件,还有一种就是plugins这个文件夹,这个是 ...
- php中var_dump、var_export和print_r的用法区别
void var_dump ( mixed $expression [, mixed $... ] )此函数显示关于一个或多个表达式的结构信息,包括表达式的类型与值.数组将递归展开值,通过缩进显示其结 ...
- models中字段参数blank和null的用法区别
blank当blank=True时,说明此处的数据可以不填,默认情况下为False,也就意味着默认情况下,所输入的数据不得空,blank是和页面表单有关,在页面需要输入参数的时候,如果在models里 ...
- Tensorflow中的run()函数
1 run()函数存在的意义 run()函数可以让代码变得更加简洁,在搭建神经网络(一)中,经历了数据集准备.前向传播过程设计.损失函数及反向传播过程设计等三个过程,形成计算网络,再通过会话tf.Se ...
- TensorFlow中的通信机制——Rendezvous(一)本地传输
背景 [作者:DeepLearningStack,阿里巴巴算法工程师,开源TensorFlow Contributor] 在TensorFlow源码中我们经常能看到一个奇怪的词——Rendezvous ...
- 第二十二节,TensorFlow中RNN实现一些其它知识补充
一 初始化RNN 上一节中介绍了 通过cell类构建RNN的函数,其中有一个参数initial_state,即cell初始状态参数,TensorFlow中封装了对其初始化的方法. 1.初始化为0 对于 ...
- (原)tensorflow中函数执行完毕,显存不自动释放
转载请注明出处: http://www.cnblogs.com/darkknightzh/p/7608916.html 参考网址: https://stackoverflow.com/question ...
- PyTorch 中 torch.matmul() 函数的文档详解
官方文档 torch.matmul() 函数几乎可以用于所有矩阵/向量相乘的情况,其乘法规则视参与乘法的两个张量的维度而定. 关于 PyTorch 中的其他乘法函数可以看这篇博文,有助于下面各种乘法的 ...
随机推荐
- Treap总结
\(Treap = Tree + Heap\) 树堆(Treap),在数据结构中也称Treap,是指有一个随机附加域满足堆的性质的二叉搜索树,其结构相当于以随机数据插入的二叉搜索树.其基本操作的期望时 ...
- 基于axios的万能封装
一 . 命名axios.js import axios from 'axios'; export default function ajax(url = '', params = {}, type = ...
- Spark学习之路 (十七)Spark分区[转]
分区的概念 分区是RDD内部并行计算的一个计算单元,RDD的数据集在逻辑上被划分为多个分片,每一个分片称为分区,分区的格式决定了并行计算的粒度,而每个分区的数值计算都是在一个任务中进行的,因此任务的个 ...
- Java代码操作Elasticsearch
创建maven项目,导入依赖 <dependency> <groupId>junit</groupId> <artifactId>junit</a ...
- IDEA如何恢复到以前的代码
虽然说IDEA的Ctrl+z撤销操作和Ctrl+Shift+Z重做操作为书写代码提供了很大的便利 但是在各种原因不小心失误撤销后又想不起来代码是怎么写的时候就非常尴尬,这时候就需要代码恢复到以前的状态 ...
- Pr制作音乐相册
Pr制作音乐相册 设置蒙版效果
- grid 布局(2)
目录 grid 布局(2) grid区域属性 网格线名称 grid-template-areas 属性 grid-auto-flow 容器内子元素的属性 grid 布局(2) grid区域属性 网格线 ...
- Python 函数 初学者笔记
定义函数 def greet_user(username):#定义一个名为greet_user的函数,username时个形参 print("Hello!" + usernam ...
- ng-核心特性(模型概念)
angular核心特性 很多开发者已经做过非常多的项目,但是当你跟他聊的时候,你很快就会发现他并没有掌握这门框架的精髓.打几个比方,当别人提到 Spring 的时候,你的大脑里面第一个想到一定是 DI ...
- LeetCode-21 有序链表的合并
问题描述: 将两个有序链表合并为一个新的有序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例: 输入:1->2->4, 1->3->4输出:1->1-& ...