第六节:关于矩阵的相关问题
import tensorflow as tf
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
# 开启一个交互式会话
sess = tf.InteractiveSession()
# 定义一个5*5的矩阵
I_matrix = tf.eye(5)
print(I_matrix.eval())
# 定义一个5*5的矩阵变量
X = tf.Variable(tf.eye(5)) # 这矩阵!是!单位矩阵?
X.initializer.run() # 初始化变量
print(X.eval())
# 矩阵相乘
A = tf.Variable(tf.random_normal([5, 10]))
A.initializer.run()
product = tf.matmul(X, A)
print(product.eval())
# 创建一个5*10 ,0-2范围内的伽马分布随机数组变量
b = tf.Variable(tf.random_uniform([5, 10], 0, 2, dtype=tf.int32))
b.initializer.run()
print(b.eval())
# 将b转化成一个浮点数类型
b_new = tf.cast(b, dtype=tf.float32)
print(b_new.eval())
# 矩阵相加
t_sum = tf.add(product, b_new)
t_sub = product - b_new
print("A+X \n", t_sum.eval())
print("A*X - b_new \n", t_sub.eval())
一些其他有用的矩阵操作,如按元素相乘、乘以一个标量、按元素相除、按元素余数相除等,可以执行如下语句:
# 创建两个随机矩阵
a = tf.Variable(tf.range(5))
b = tf.Variable(tf.range(5, 10))
A = a * b # 相乘
B = tf.scalar_mul(2, A) # 2倍
C = tf.div(a, b) # 相除
D = tf.mod(a, b) # 取余
init_op = tf.global_variables_initializer()
with tf.Session() as sess:
sess.run(init_op)
writer = tf.summary.FileWriter('graphs', sess.graph)
a, b, A_R, B_R, C_R, D_R = sess.run([a, b, A, B, C, D])
print("a\n", a, "\nb\n", b, "\na*b\n", A_R, "\n2*a*b\n", B_R, "\na/b\n", C_R, "\na%b\n", D_R)
writer.close()
结果:
a
[0 1 2 3 4]
b
[5 6 7 8 9]
a*b
[ 0 6 14 24 36]
2*a*b
[ 0 12 28 48 72]
a/b
[0 0 0 0 0]
a%b
[0 1 2 3 4]
解读分析
所有加法、减、除、乘(按元素相乘)、取余等矩阵的算术运算都要求两个张量矩阵是相同的数据类型,否则就会产生错误。可以使用 tf.cast() 将张量从一种数据类型转换为另一种数据类型。
拓展阅读
如果在整数张量之间进行除法,最好使用 tf.truediv(a,b),因为它首先将整数张量转换为浮点类,然后再执行按位相除。
第七节:
Tensorflow与深度学习关系
神经网络 DNN是一个生物启发式的计算和学习模型。像生物神经元一样,它们从其他细胞(神经元或环境)获得加权输入。这个加权输入经过一个处理单元并产生可以是二进制或连续(概率,预测)的输出。
人工神经网络(ANN)是这些神经元的网络,可以随机分布或排列成一个分层结构。这些神经元通过与它们相关的一组权重和偏置来学习。
TensorFlow 成为最受欢迎的深度学习库,原因如下:
1.TensorFlow 是一个强大的库,用于执行大规模的数值计算,如矩阵乘法或自动微分。这两个计算是实现和训练 DNN 所必需的。
2.TensorFlow 在后端使用 C/C++,这使得计算速度更快。
3.TensorFlow 有一个高级机器学习API(tf.contrib.learn),可以更容易地配置、训练和评估大量的机器学习模型。
4.可以在 TensorFlow 上使用高级深度学习库 Keras。Keras 非常便于用户使用,并且可以轻松快速地进行原型设计。它支持各种 DNN,如RNN、CNN,甚至是两者的组合。
任何深度学习网络都由四个重要部分组成:数据集、定义模型(网络结构)、训练/学习和预测/评估。可以在 TensorFlow 中实现所有这些。
Tensorflow 读取数据的三种方式
1.通过feed_dict传递数据;
2.从文件中读取数据;
3.使用预加载的数据;
http://c.biancheng.net/view/1899.html