第五章-Tensorflow

Tensorflow

基本流程

步骤

  • 创建尚未执行/评估的张量(变量)
  • 在这些张量之间写入操作
  • 初始化你的张量
  • 创建一个会话
  • 运行会话。这将运行你上面写的操作 eg:初始化你的变量,创建一个会话并在会话中运行这些操作

例子

1
2
3
4
5
6
7
8
9
10
# 初始化变量
a = tf.constant(2)
b = tf.constant(10)
c = tf.multiply(a,b)
print(c)
-->Tensor("Mul_1:0", shape=(), dtype=int32)
# 运行会话
sess = tf.Session()
print(sess.run(c))
-->20

会话

方法一:

1
2
3
4
sess = tf.Session()
# 运行变量初始化
result = sess.run(..., feed_dict = {...})
sess.close()

方法二:

1
2
3
4
with tf.Session() as sess: 
# 运行变量初始化
result = sess.run(..., feed_dict = {...})
# 自动关闭会话

占位符

占位符只是一个变量(第一次定义时无需为它指定一个值),仅在运行会话时为其分配数据 #### 步骤 * 创建占位符 * 指定与您要计算的操作对应的计算图 * 创建会话 * 运行会话,必要时使用Feed字典来指定占位符变量的值。

例子(tf实现sigmoid函数)

1
2
3
4
5
6
7
8
9
10
11
def sigmoid(z):
# 创建占位符
x = tf.placeholder(tf.float32, name = "x")
# 指定与您要计算的操作对应的计算图
sigmoid = tf.sigmoid(x)
# 创建会话
with tf.Session() as sess:
# 运行会话
result = sess.run(sigmoid, feed_dict = {x:z})

return result

ONE-HOT编码(tf.one_hot())

编码方式如图: mark #### 代码实现 使用tf.one_hot()实现

1
2
3
4
5
6
7
8
9
10
11
12
labels = np.array([1,2,3,0,2,1])
one_hot = one_hot_matrix(labels, C = 4)

def one_hot_matrix(labels, C):
C = tf.constant(C, name="C")
one_hot_matrix = tf.one_hot(labels, C, 1)

sess = tf.Session()
one_hot = sess.run(one_hot_matrix).T
sess.close()

return one_hot

初始化零和向量(tf.ones())

1
2
3
4
5
6
7
8
9
10
# 创建一个一维数组
def ones(shape):
ones = tf.ones(shape)
sess = tf.Session()
ones = sess.run(ones)
sess.close()
return ones

print ("ones = " + str(ones([3])))
-->ones = [ 1. 1. 1.]

代码

参考资料