1 import tensorflow as tf
 2 
 3 # 张量 -----数据流图中的线-----数据传递----本质:多维数组
 4 
 5 # 两个属性
 6 # dtype---数据类型
 7 # 将numpy里面的np.数据类型----变成了tf.数据类型
 8 # 可以在创建张量的时候去指定dtype 参数来指定tensor的数据类型
 9 #
10 
11 # shape ---形状
12 
13 # # 创建张量----创建固定值张量
14 con_a = tf.constant(3, dtype=tf.float64, name="con_a")
15 con_a = tf.to_int32(con_a)  # 数据类型可以强制转换
16 
17 #
18 res = tf.to_int32(True)
19 res = tf.to_int32(False)
20 print("res:\n",res)
21 print("res的类型: \n", type(res))
22 #
23 # # 数据类型转换 cast
24 # # 参数1  将要转化的tensor
25 # # 参数2  新的数据类型
26 con_a = tf.cast(con_a,dtype=tf.float64)
27 con_a = tf.cast(con_a,dtype=tf.int64)
28 print("con_a:\n", con_a)
29 #
30 #
31 #
32 #
33 # # 创建一个全为0 的张量
34 zeros = tf.zeros(shape=[2, 3], dtype=tf.int32, name="zeros")
35 print("zeros:\n", zeros)
36 #
37 # # 创建一个全部为1 的张量
38 ones = tf.ones(shape=[2, 2], dtype=tf.int32, name="ones")
39 print("ones:\n", ones)
40 #
41 # # 创建随机张量---创建一个符合标准正态分布的随机张量
42 hh = tf.random_normal(
43     shape=[2, 3],
44     mean=0.0,
45     stddev=1.0,
46     name="hh",
47     dtype=tf.float64
48 )
49 print("hh:\n", hh)
50 # 获取 tensor里面包含的值
51 # 开启会话执行图
52 with tf.Session() as ss:
53     print(ss.run(fetches=[con_a, zeros, ones, hh]))
54     print(ss.run(res))
55 
56 
57 # 形状的更改
58 gg = tf.random_normal(
59     shape=[2, 2],
60     mean=0.0,
61     stddev=1.0,
62     name="gg"
63 )
64 # None 行None列的2阶张量
65 gg = tf.placeholder(shape=[None, None], dtype=tf.int32, name="gg")
66 print("gg:\n", gg)
67 # 确定其形状
68 # 静态形状改变,只能将未知的形状确定,不能夸阶更改
69 # gg.set_shape(shape=[2, 2])
70 # gg.set_shape(shape=[1, 2, 2])
71 # 也能将未知的形状确定
72 # 而且可以夸阶更改
73 # 只要元素确定,想怎么改就怎么改
74 gg = tf.reshape(gg, shape=[1, 2, 2])
75 # gg = tf.reshape(gg, shape=[1, 2, 3]) # 错误的
76 print("gg:\n", gg)
77 
78 with tf.Session() as ss:
79     # print(ss.run(gg, feed_dict={gg: [[1, 2], [3, 4]]}))
80     # print(ss.run(gg, feed_dict={gg: [[[1, 2], [3, 4]]]})) # 静态形状更改时错误的不能夸阶更改
81     print(ss.run(gg, feed_dict={gg: [[[1, 2], [3, 4]]]})) # reshape能夸阶更改
82     # print(ss.run(gg)) # 错误的不能夸阶更改