一、矩阵的定义以及矩阵之间的运算
1.矩阵的定义
#矩阵 其实就是一个元素为列表的列表
'''
3 3 3
[[1,2,3],[1,2,3],[1,2,3]] 这就是一个三维矩阵 3 3 3 其他的以此类推
3 3 3
'''
import tensorflow as tf
#定义一个三维矩阵常量
data1 = tf.constant([
[1,2,3],
[4,5,6],
[7,8,9]
])
print(data1.shape)#打印矩阵的维度
#矩阵的行和列都是自零开始的
with tf.Session() as sess:
print(sess.run(data1))#打印整体
print(sess.run(data1[0]))#打印第几行矩阵的内容
print(sess.run(data1[0,1]))#打印具体的值第几行第几列的数据
'''还可以以切片的形式输出'''
print(sess.run(data1[:2,1]))#打印从第1行到第2行的第1列数据 即2 5
print(sess.run(data1[:,:2]))#打印每一行的第一 二列数据即 1 2 4 5 7 8
输出结果:
(3, 3)
[[1 2 3]
[4 5 6]
[7 8 9]]
[1 2 3]
2
[2 5]
[[1 2]
[4 5]
[7 8]]
2.矩阵的运算 这里我们说的是加法和乘法
#矩阵运算
import tensorflow as tf
'''乘法规则 两个矩阵s1 和 s2 s1为m1*n1 s2为m2*n2 则n1要等于m2 最终的矩阵为m1*n2
加法规则 两个矩阵规格必须一样都是m*n才可进行运算
s1= 1, 2 s2 = 5, 6 则s1*s2= 1*5 + 2*7, 1*6 + 2*8 s1+s2= 1+5 ,2+6
3, 4 7, 8 3*5 + 4*7 ,3*6 + 4*8 3+7 ,4+8
'''
data1 = tf.constant([[1,2],[3,4]])
data2 = tf.constant([[5,6],[7,8]])
matMul = tf.matmul(data1,data2)
matAdd = tf.add(data1,data2)
with tf.Session() as sess:
print(sess.run(matMul))
print(sess.run(matAdd))
输出结果:
[[19 22]
[43 50]]
[[ 6 8]
[10 12]]
二、一些特殊矩阵(全0、全1、随机矩阵):
import tensorflow as tf
'''定义全0 全1 填充 随机矩阵'''
mat0 = tf.constant([[0,0,0],[0,0,0]])#显然当数据量很大时这样不行
mat1 = tf.zeros([3,4])#定义全0矩阵
mat2 = tf.ones([3,4])#定义全1矩阵
mat3 = tf.fill([3,4],15)#以15来填充矩阵
mat4 = tf.random_uniform([3,4],1,5)#定义一个3行4列的以1 到5 随机数填充的矩阵
with tf.Session() as sess:
print(sess.run(mat0))
print('全0矩阵',sess.run(mat1))
print('全1矩阵',sess.run(mat2))
print('自定义填充矩阵',sess.run(mat3))
print('随机矩阵',sess.run(mat4))
输出结果:
[[0 0 0]
[0 0 0]]
全0矩阵 [[0. 0. 0. 0.]
[0. 0. 0. 0.]
[0. 0. 0. 0.]]
全1矩阵 [[1. 1. 1. 1.]
[1. 1. 1. 1.]
[1. 1. 1. 1.]]
自定义填充矩阵 [[15 15 15 15]
[15 15 15 15]
[15 15 15 15]]
随机矩阵 [[4.9475193 4.405265 4.329329 4.6825447]
[2.1526985 1.4548941 4.059652 1.4330664]
[1.7129827 4.0956717 2.4845014 3.4982362]]