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()函数的用法区别的更多相关文章

  1. SQL语句中order_by_、group_by_、having的用法区别

    order by 从英文里理解就是行的排序方式,默认的为升序. order by 后面必须列出排序的字段名,可以是多个字段名. group by 从英文里理解就是分组.必须有“聚合函数”来配合才能使用 ...

  2. Tensorflow中保存模型时生成的各种文件区别和作用

    假如我们得到了如下的checkpoints, 上面的文件主要可以分成三类:一种是在保存模型时生成的文件,一种是我们在使用tensorboard时生成的文件,还有一种就是plugins这个文件夹,这个是 ...

  3. php中var_dump、var_export和print_r的用法区别

    void var_dump ( mixed $expression [, mixed $... ] )此函数显示关于一个或多个表达式的结构信息,包括表达式的类型与值.数组将递归展开值,通过缩进显示其结 ...

  4. models中字段参数blank和null的用法区别

    blank当blank=True时,说明此处的数据可以不填,默认情况下为False,也就意味着默认情况下,所输入的数据不得空,blank是和页面表单有关,在页面需要输入参数的时候,如果在models里 ...

  5. Tensorflow中的run()函数

    1 run()函数存在的意义 run()函数可以让代码变得更加简洁,在搭建神经网络(一)中,经历了数据集准备.前向传播过程设计.损失函数及反向传播过程设计等三个过程,形成计算网络,再通过会话tf.Se ...

  6. TensorFlow中的通信机制——Rendezvous(一)本地传输

    背景 [作者:DeepLearningStack,阿里巴巴算法工程师,开源TensorFlow Contributor] 在TensorFlow源码中我们经常能看到一个奇怪的词——Rendezvous ...

  7. 第二十二节,TensorFlow中RNN实现一些其它知识补充

    一 初始化RNN 上一节中介绍了 通过cell类构建RNN的函数,其中有一个参数initial_state,即cell初始状态参数,TensorFlow中封装了对其初始化的方法. 1.初始化为0 对于 ...

  8. (原)tensorflow中函数执行完毕,显存不自动释放

    转载请注明出处: http://www.cnblogs.com/darkknightzh/p/7608916.html 参考网址: https://stackoverflow.com/question ...

  9. PyTorch 中 torch.matmul() 函数的文档详解

    官方文档 torch.matmul() 函数几乎可以用于所有矩阵/向量相乘的情况,其乘法规则视参与乘法的两个张量的维度而定. 关于 PyTorch 中的其他乘法函数可以看这篇博文,有助于下面各种乘法的 ...

随机推荐

  1. mysql 表结构操作

    alter table name : alter table table1 to table2;add column : alter table 表名 add column 列名 varchar(); ...

  2. 谷歌BBR拥塞算法内核更新

    为什么想到这个呢,算法什么的又不太懂,这是 因为搭建VPN + BBR 与之简直绝配 有的人搭建SSR ,配一个什么锐速,还需要降内核版本, 而且还容易出错,降了之后更加容易出现兼容性问题,所以偶尔看 ...

  3. node的httpserver简单创建

    1.设计原则为文件夹名字可以依据资源来命名,静态资源统一命名 ps:路径中绝对和相对路径,依据server.js本身的位置而言 const http = require("http" ...

  4. pom.xml配置文件详解(Maven)

    注:博主 Chloneda:个人博客 | 博客园 | Github | Gitee | 知乎 注:本文转载自:https://blog.csdn.net/u012152619/article/deta ...

  5. Java获取IP地址,IpUtils工具类,Java IP地址获取

    ================================ ©Copyright 蕃薯耀 2020-01-17 https://www.cnblogs.com/fanshuyao/ import ...

  6. VSCode常用插件之vscode-stylelint使用

    更多VSCode插件使用请访问:VSCode常用插件汇总 vscode-stylelint这是一个检验CSS/SASS/LESS代码规范的插件. StyleLint 使用指南 vscode-style ...

  7. 安装MongoDB到Ubuntu(APT)

    运行环境 系统版本:Ubuntu 16.04.5 LTS 软件版本:mongodb-org-4.0.8 硬件要求:无 安装过程 1.配置APT-Mongodb存储库 ATP-Mongodb存储库由Mo ...

  8. JAVA控制流程

    Java代码有三种执行结构流程,顺序结构.分支结构.循环结构 顺序结构 顺序结构是最简单的代码执行结构,从代码开始逐步执行每一句代码到结束 public class C { public static ...

  9. ArcGIS Server 地图服务,查询出错 Error performing query operation

    Error: Error performing query operation Error Message Querying a layer from a Map Service that retur ...

  10. linux下定时网站文件备份和数据备份以及删除旧备份标准代码

    直切正题: 文件备份:web.sh 数据备份:db.sh 删除旧备份:clear.sh vi web.sh文件内容为: #!/bin/bash        解释:shell脚本标准头 cd  网站文 ...