TensorFlow 中的基本矩阵操作
最编程
2024-05-22 15:37:16
...
这里所说的基本运算,是指常见的加
、减
、乘
、除
运算,需要区分矩阵乘法
和矩阵点乘
。为了方便运算,首先定义三个矩阵,为什么三个矩阵呢,因为矩阵乘法要求前一个矩阵的行数等于后一个矩阵的列数。
a = tf.constant([[2, 2, 2], [3, 3, 3]], dtype=tf.float32)
b = tf.constant([[1, 1, 1], [2, 2, 2]], dtype=tf.float32)
c = tf.constant([[1, 1], [2, 2], [3, 3]], dtype=tf.float32)
# a =
# [[2. 2. 2.]
# [3. 3. 3.]]
# b =
# [[1. 1. 1.]
# [2. 2. 2.]]
# c =
# [[1. 1.]
# [2. 2.]
# [3. 3.]]
- tf.add(x, y, name=None)
矩阵x
和矩阵y
对应位置的元素相加
tf.add(a, b)
[[3. 3. 3.]
[5. 5. 5.]]
- tf.subtract(x, y, name=None)
矩阵x
和矩阵y
对应位置的元素相减
tf.subtract(a, b)
[[1. 1. 1.]
[1. 1. 1.]]
- tf.multiply(x, y, name=None)
矩阵x
和矩阵y
对应位置的元素相乘
tf.multiply(a, b)
[[2. 2. 2.]
[6. 6. 6.]]
- tf.divide(x, y, name=None)
矩阵x
和矩阵y
对应位置的元素相除
tf.divide(a, b)
[[2. 2. 2. ]
[1.5 1.5 1.5]]
- 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
乘以矩阵b
,返回的矩阵行数等矩阵a的行数,列数等于矩阵b的列数
tf.matmul(a, c)
[[12. 12.]
[18. 18.]]
实际上写代码时,为了方便,我们也可以直接使用运算符号:
- 加法:a+b
- 减法:a-b
- 乘法:a*b
- 除法:a/b
注意:若a是一个tensor,b是一个scalar,则对a里面的每个元素,都执行相同操作(+,-,*,/)scalar
上一篇: 矩阵的运算
推荐阅读
-
TensorFlow 的基本概念和使用场景
-
Python 教程:Python 中的集合及其对集合的所有操作
-
通过 Vue 中的 v-bind 增强样式控制--(通过 v-bind 操作类和操作样式属性的详细说明,附示例和代码)
-
Java HashMap 的数据结构和基本原理及其在 Jdk8、Jdk11 和 Jdk17 中的一些变化,以及一些常见问题。
-
SQL 中的 DDL 分类 - I. 操作数据库的 DDL 语句
-
力扣 1884.Egg Drop Two Egg(两个鸡蛋掉落) - 输入: n = 100 输出: 1414 解说 最佳策略是 - 从 9 楼扔下第一个鸡蛋。如果蛋碎了,那么 f 在 0 和 8 之间。从第 1 层扔第 2 个鸡蛋,然后每扔 1 层,分 8 次找到 f。总操作次数 = 1 + 8 = 9。 - 如果第一个鸡蛋没有破,那么从 22 楼扔第一个鸡蛋。如果蛋碎了,那么 f 介于 9 和 21 之间。将第二个鸡蛋从 10 楼往下扔,然后每扔一次往上扔一层楼,在 12 次尝试中找出 f。总操作次数 = 2 + 12 = 14。 - 如果第一个鸡蛋没有再次破碎,那么用类似的方法从 34、45、55、64、72、79、85、90、94、97、99 和 100 层扔第一个鸡蛋。 无论结果如何,最多需要扔 14 次才能确定 f。 一个非常有趣的问题 方法 1:动态编程
-
Python 学习笔记 - 函数 - 2.函数的基本操作
-
STL 中的 Priority_queue - 深入分析 C++ 中优先队列的实现原理、核心功能和基本机制。
-
代码随机化算法训练营 | 235. 二进制搜索树的最近共同祖先, 701. 二进制搜索树中的插入操作, 450. 二进制搜索树中删除节点
-
水槽实践 - 水槽中拦截器的解释和操作