TensorFlow2.0矩阵与向量的加减乘实例

1. TensorFlow介绍

TensorFlow是一个开源的软件库,广泛应用于机器学习等领域中的数值计算。它是由Google Brain团队开发的第二代机器学习系统,它可以在不同的平台上进行计算,包括计算机、服务器、移动设备和嵌入式设备。TensorFlow提供了非常丰富的API,包括图像处理、自然语言处理、语音识别等领域的相关API。

2. 矩阵和向量

矩阵和向量在数学和计算机科学中都是非常重要的概念。在TensorFlow中,矩阵和向量都是由Tensor对象来表示的。

2.1 矩阵

矩阵是由一列或多列数值按照一定的规律排列成的长方形数组。在TensorFlow中,矩阵可以通过tf.constant或者tf.Variable函数来创建。

import tensorflow as tf

import numpy as np

# 创建一个2乘以3的矩阵

mat1 = tf.constant([[1,2,3],[4,5,6]], dtype=tf.float32)

mat2 = tf.Variable(np.zeros([2,3]), dtype=tf.float32)

注意,创建矩阵时要指定数据类型,例如tf.float32,tf.int32等。

2.2 向量

向量是一个有序数组,即一维的矩阵。在TensorFlow中,向量可以通过tf.constant或者tf.Variable函数来创建。

import tensorflow as tf

import numpy as np

# 创建一个长度为5的向量

vec1 = tf.constant([1,2,3,4,5], dtype=tf.float32)

vec2 = tf.Variable([0.0]*5, dtype=tf.float32)

3. 矩阵和向量的运算

矩阵和向量之间可以进行加减乘等运算。

3.1 加法

矩阵和向量的加法需要满足维度相同的条件。在TensorFlow中,可以使用tf.add函数实现矩阵和向量的加法。

import tensorflow as tf

import numpy as np

mat1 = tf.constant([[1,2,3],[4,5,6]], dtype=tf.float32)

mat2 = tf.constant([[1,1,1],[2,2,2]], dtype=tf.float32)

vec = tf.constant([1,2,3], dtype=tf.float32)

# 矩阵加法

mat_add = tf.add(mat1, mat2)

# 向量加法

vec_add = tf.add(vec, vec)

矩阵的加法结果如下:

tf.Tensor(

[[2. 3. 4.]

[6. 7. 8.]], shape=(2, 3), dtype=float32)

向量的加法结果如下:

tf.Tensor([2. 4. 6.], shape=(3,), dtype=float32)

3.2 减法

矩阵和向量的减法需要满足维度相同的条件。在TensorFlow中,可以使用tf.subtract函数实现矩阵和向量的减法。

import tensorflow as tf

import numpy as np

mat1 = tf.constant([[1,2,3],[4,5,6]], dtype=tf.float32)

mat2 = tf.constant([[1,1,1],[2,2,2]], dtype=tf.float32)

vec = tf.constant([1,2,3], dtype=tf.float32)

# 矩阵减法

mat_sub = tf.subtract(mat1, mat2)

# 向量减法

vec_sub = tf.subtract(vec, vec)

矩阵的减法结果如下:

tf.Tensor(

[[0. 1. 2.]

[2. 3. 4.]], shape=(2, 3), dtype=float32)

向量的减法结果如下:

tf.Tensor([0. 0. 0.], shape=(3,), dtype=float32)

3.3 乘法

矩阵和向量的乘法需要满足维度相同的条件。在TensorFlow中,可以使用tf.matmul函数实现矩阵和向量的乘法。

3.3.1 矩阵乘法

矩阵乘法需要满足左矩阵的列数等于右矩阵的行数。在TensorFlow中,可以使用tf.matmul函数实现矩阵的乘法。

import tensorflow as tf

import numpy as np

mat1 = tf.constant([[1,2],[3,4]], dtype=tf.float32)

mat2 = tf.constant([[1],[2]], dtype=tf.float32)

# 矩阵乘法

mat_mul = tf.matmul(mat1, mat2)

矩阵的乘法结果如下:

tf.Tensor(

[[ 5.]

[11.]], shape=(2, 1), dtype=float32)

3.3.2 向量点乘

向量点乘指的是将两个向量的对应元素相乘再求和。在TensorFlow中,可以使用tf.tensordot函数实现向量点乘(注意,这个操作不同于矩阵乘法,矩阵乘法会对行与列进行乘法操作,而向量点乘是对应元素相乘再求和)。

import tensorflow as tf

import numpy as np

vec1 = tf.constant([1,2,3], dtype=tf.float32)

vec2 = tf.constant([4,5,6], dtype=tf.float32)

# 向量点乘

vec_dot = tf.tensordot(vec1, vec2, 1)

向量点乘的结果如下:

tf.Tensor(32.0, shape=(), dtype=float32)

4. 总结

TensorFlow是一个非常强大的机器学习库,支持矩阵和向量的各种运算操作,包括加、减、乘、点乘等。矩阵和向量在机器学习领域中广泛应用,掌握它们的相关操作对于实现复杂模型是非常重要的。

免责声明:本文来自互联网,本站所有信息(包括但不限于文字、视频、音频、数据及图表),不保证该信息的准确性、真实性、完整性、有效性、及时性、原创性等,版权归属于原作者,如无意侵犯媒体或个人知识产权,请来电或致函告之,本站将在第一时间处理。猿码集站发布此文目的在于促进信息交流,此文观点与本站立场无关,不承担任何责任。

后端开发标签