0%

TensorFlow 笔记一

一个十分简单的TensorFlow笔记。


导入

python里面直接按照module来导入就行,

1
import tensorflow as tf

常量

1
a = tf.constant(1, name='a')

或者

1
a = tf.constant(1)

它也可以是矩阵,

1
X = tf.constant(np.random.randn(3,1), name = "X")

变量

例如,

1
2
3
4
y_hat = tf.constant(36, name='y_hat')
y = tf.constant(39, name='y')

loss = tf.Variable((y - y_hat)**2, name='loss')

可以看到变量是由一些常量进行一些运算后得到的。

当然直接写也是可以的,

1
loss = (y - y_hat)**2

TensorFlow对基本运算进行了重写,它会自动识别出这里的运算步骤的。


初始化变量

1
init = tf.global_variables_initializer()

还不明白它的作用。


占位符

1
x = tf.placeholder(tf.int64, name = 'x')

占位符可以看成一个变量,它可以重复的赋值,赋值时要使用feed_dict{}

1
sess.run(2 * x, feed_dict = {x: 3})

会话(session)

TensorFlow的运行需要建立一个会话任务,然后通过它来运行,

1
2
3
with tf.Session() as session:
session.run(init)
print(session.run(loss))

要通过session才能将计算run()起来,这里也可以使用下面的方式,

1
2
3
4
sess = tf.Session()
sess.run(init)
print(sess.run(loss))
sess.close()

目前看来,上面结构的好处就是可以自动进行close()


十分简单的程序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import tensorflow as tf   # 导包

a = tf.constant(2, name='a') # 常量

b = tf.constant(3, name='b') # 常量

c = a * b + b # 变量

d = tf.placeholder(tf.int32, name = 'd') # 占位符

f = d + c # 变量

init = tf.global_variables_initializer() # 初始化器

with tf.Session() as session: # 建立会话
session.run(init) # 执行初始化
print(session.run(f, feed_dict = {d: 100})) # 运行变量f

109

甚至怀疑应该把variable看成为一个运算式子,所以才会去run()这么一个式子。