【机器学习入门笔记10:TensorFlow矩阵基础】20190217

2019-02-17  by 崔斐然 

#pacehold 实现算术操作:运算时实时插入

#placehold
import os
import tensorflow as tf
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'

data1 = tf.placeholder(tf.float32)
data2 = tf.placeholder(tf.float32)
dataAdd = tf.add(data1,data2)
with tf.Session() as sess:
    print(sess.run(dataAdd,feed_dict={data1:6,data2:2}))
    # 1 dataAdd 2 data (feed_dict = {1:6,2:2})
print('end!')

#TensorFlow中的矩阵运算,1、什么是矩阵运算。2、矩阵运算的规则

1、矩阵就是一个m行n列的二维数组。外部由一个中括号表示,内部[里面是列数据]  []中括号整体是行数,行列之间都用都好隔开。

手绘一下:

实现代码:

#类比 数组 M行N列 []   内部[]  [里面 列数据]   [] 中括号整体 行数
#[[6,6]] [[6,6]]
import tensorflow as tf
data1 = tf.constant([[6,6]])
data2 = tf.constant([[2],
                     [2]])
data3 = tf.constant([[3,3]])
data4 = tf.constant([[1,2],
                     [3,4],
                     [5,6]])
print('打印维度',data4.shape)# 维度
with tf.Session() as sess:
    print('打印整体 \n',sess.run(data4)) #打印整体
    print('打印第一行',sess.run(data4[0]))# 打印某一行
    print('打印第一列',sess.run(data4[:,0]))#MN 列
    print('打印第1行第2列',sess.run(data4[0,1]))# 1 1  MN = 0 32 = M012 N01

结果如下:

打印维度 (3, 2)
打印整体 
 [[1 2]
 [3 4]
 [5 6]]
打印第一行 [1 2]
打印第一列 [1 3 5]
打印第1行第2列 2

2、矩阵的运算:

矩阵加法:行列必须相等

矩阵乘法:参考线性代数即可。形象点就是A1中的第一行顺时针旋转与A2第一列对应项相乘后相加

矩阵相加和矩阵相乘实现如下:

import tensorflow as tf
data1 = tf.constant([[6,6]])
data2 = tf.constant([[2],
                     [2]])
data3 = tf.constant([[3,3]])
data4 = tf.constant([[1,2],
                     [3,4],
                     [5,6]])
matMul = tf.matmul(data1,data2)
matMul2 = tf.multiply(data1,data2)
matAdd = tf.add(data1,data3)
with tf.Session() as sess:
    print('矩阵的乘法:',sess.run(matMul))#1 维 M=1 N2. 1X2(MK) 2X1(KN) = 1
    print('矩阵的加法:',sess.run(matAdd))#1行2列
    print('矩阵的点积: \n',sess.run(matMul2))# 1x2 2x1 = 2x2
    print('一次输出多个值: \n',sess.run([matMul,matAdd]))

实现结果:

矩阵的乘法: [[24]]
矩阵的加法: [[9 9]]
矩阵的点积: 
 [[12 12]
 [12 12]]
一次输出多个值: 
 [array([[24]], dtype=int32), array([[9, 9]], dtype=int32)]

 

矩阵的其他语法:

import os
import tensorflow as tf
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'

# 定义2行3列的空矩阵 方法1
mat0 = tf.constant([[0,0,0],[0,0,0]])
# 定义2行3列的空矩阵 方法2
mat1 = tf.zeros([2,3])
# 定义2行3列的全1矩阵
mat2 = tf.ones([3,2])
# 定义填充矩阵
mat3 = tf.fill([2,3],15)
with tf.Session() as sess:
    #print(sess.run(mat0))
    #print(sess.run(mat1))
    #print(sess.run(mat2))
    print(sess.run(mat3))

# 定义一个3行1列的矩阵
mat11 = tf.constant([[2],[3],[4]])
# 定义一个和mat11相同维度的空矩阵
mat21 = tf.zeros_like(mat1)
# 把0-2之间的数据分为相等的十份
mat31 = tf.linspace(0.0,2.0,11)
# 定义一个-1至2之间的随机矩阵
mat41 = tf.random_uniform([2,3],-1,2)
with tf.Session() as sess:
    print(sess.run(mat21))
    print(sess.run(mat31))
    print(sess.run(mat41))

执行结果: 

[[15 15 15]
 [15 15 15]]
[[0. 0. 0.]
 [0. 0. 0.]]
[0.        0.2       0.4       0.6       0.8       1.        1.2
 1.4       1.6       1.8000001 2.       ]
[[ 1.2189956   0.04116595  1.3214905 ]
 [ 0.30282116  1.3305001  -0.3343072 ]]

猜你喜欢

转载自blog.csdn.net/qq_33273956/article/details/87474459