tensorflow学习笔记 -- 张量和简单API

3. 张量

张量是一种operation是由数组组成,不同维的数组对于张量来说是不同的阶也叫做形状,例如如下形状的表示:

  • 0阶:()  -->  括号内没有数字,表示0维也就是最普通的数字
  • 1阶:(5)  -->  括号内一个数字,表示长度为5的1维数组
  • 2阶:(2,5)  -->  括号内两个数字,表示2行5列的二维数组
  • 3阶:(3,2,5)  -->  括号内三个数字,表示3张2行5列的二维数组

张量的形状分为静态和动态两种,不产生新张量的情况下改变形状属于静态形状,如下:

import tensorflow as tf

plt = tf.placeholder(tf.float32, [2, 3])
plt1 = tf.placeholder(tf.float32, [None, 3])

# 固定后的形状不能改变,如果改变会报错,例如下面一行代码
# plt.set_shape([3, 2])
# 不固定的形状不能改变其阶数,如果改变会报错,例如下面一行代码
# plt1.set_shape([3, 2, 1])
# 不固定的形状可以设置形状,此时不会产生新的张量,所以plt1属于静态形状
plt1.set_shape([3, 3])

print(plt)
print(plt1)

with tf.compat.v1.Session() as sess:
    pass

动态形状可以修改很多东西,如下:

import tensorflow as tf

plt = tf.placeholder(tf.float32, [2, 3])

# 修改了形状会产生一个返回值,就是新产生的张量
plt_reshape = tf.reshape(plt, [3, 2])
# 动态形状是可以改变张量的阶数的,例如下面一行代码
plt_reshape = tf.reshape(plt, [3, 2, 1])
# 动态形状修改时要注意元素数量一致,例如plt一共2+3=5个元素,不能改成6个元素,例如下面一行代码会报错
# plt_reshape = tf.reshape(plt, [3, 3])

print(plt)
print(plt_reshape)
with tf.compat.v1.Session() as sess:
    pass

4. 简单API范例

import tensorflow as tf

# 创建3行4列数值全为0的矩阵
zeros = tf.zeros([3, 4], tf.float32)
# 创建3行4列数值全为1的矩阵
ones = tf.ones([3, 4], tf.float32)
# 创建3行4列数值全为4的矩阵
fours = tf.constant(4.0, tf.float32, [3, 4])
# 创建3行4列的平均值为4.6标准差为5.3的随机数矩阵
# 由于该函数可以创建正态分布的随机数,非常契合日常数据分布,对于训练数据非常有用
# 生成的随机数特性:
# 95.449974%的面积在平均数左右2个标准差的范围内
# 99.730020%的面积在平均数左右3个标准差的范围内
# 99.993666%的面积在平均数左右4个标准差的范围内
random = tf.random_normal([3, 4], 4.6, 5.3, tf.float32)
# 将float类型的random矩阵转换成int类型,可以转换任意数据类型
random_int = tf.cast(random, tf.int32)
# 将fours和random合并,axis=0表示行合并,axis=1表示列合并
merge = tf.concat([fours, random], axis=0)

with tf.compat.v1.Session() as sess:
    print(sess.run(zeros))
    print(sess.run(ones))
    print(sess.run(fours))
    print(sess.run(random))
    print(sess.run(random_int))
    print(sess.run(merge))

详细API可以参考地址:https://tensorflow.google.cn/api_docs/python/tf

你可能感兴趣的:(人工智能,学习笔记)