Tensorflow基本概念

2018-08-03  本文已影响0人  YANWeichuan

TensorFlow Core


TensorFlow Core 程序看作由两个互相独立的部分组成:

计算图是静态的,只有通过Session运行,进行动态运算才能得到结果

计算图

会话 (Session)

定义好图后,session运行才能得到结果

a = tf.constant(3.0, dtype=tf.float32)
b = tf.constant(4.0) # also tf.float32 implicitly
total = a + b
sess = tf.Session()
print(sess.run(total))

输出结果

7.0

数据


供给placehold

图可以参数化以便接受外部输入,也称为占位符。占位符表示承诺在稍后提供值,它就像函数参数。
示例代码

x = tf.placeholder(tf.float32)
y = tf.placeholder(tf.float32)
z = x + y

print(sess.run(z, feed_dict={x: 3, y: 4.5}))
print(sess.run(z, feed_dict={x: [1, 3], y: [2, 4]}))

上述操作的结果是输出以下内容:

7.5
[ 3.  7.]

数据集

数据集是将数据流式传输到模型的首选方法。要从数据集中获取可运行的 tf.Tensor,您必须先将其转换成 tf.data.Iterator,然后调用迭代器的 get_next 方法。
示例代码

my_data = [
    [0, 1,],
    [2, 3,],
    [4, 5,],
    [6, 7,],
]
slices = tf.data.Dataset.from_tensor_slices(my_data)
next_item = slices.make_one_shot_iterator().get_next()

while True:
  try:
    print(sess.run(next_item))
  except tf.errors.OutOfRangeError:
    break

输出
[0 1]
[2 3]
[4 5]
[6 7]

特征列

见前文 >>>

层layer


示例代码

#创建
x = tf.placeholder(tf.float32, shape=[None, 3])
linear_model = tf.layers.Dense(units=1)
y = linear_model(x)

#初始化
init = tf.global_variables_initializer()
sess.run(init)

#执行
print(sess.run(y, {x: [[1, 2, 3],[4, 5, 6]]}))

#输出结果
[[-3.41378999]
 [-9.14999008]]

训练


示例代码

x = tf.constant([[1], [2], [3], [4]], dtype=tf.float32)
y_true = tf.constant([[0], [-1], [-2], [-3]], dtype=tf.float32)

linear_model = tf.layers.Dense(units=1)

y_pred = linear_model(x)
loss = tf.losses.mean_squared_error(labels=y_true, predictions=y_pred)

optimizer = tf.train.GradientDescentOptimizer(0.01)
train = optimizer.minimize(loss)

init = tf.global_variables_initializer()

sess = tf.Session()
sess.run(init)
for i in range(100):
  _, loss_value = sess.run((train, loss))
  print(loss_value)

print(sess.run(y_pred))

最后预测的结果y_pred和实际值y_true的比较

 print(sess.run(y_pred))

[[-0.6822085]  #y_true = 0
 [-1.3305767]  #y_true = -1
 [-1.9789449] #y_true = -2
 [-2.627313 ]] #y_true = -3

几个概念

举个例子,训练集有1000个样本,batchsize=10,那么:训练完整个样本集需要:100次iteration,1次epoch

调试工具TensorBoard


首先将计算图保存为 TensorBoard 摘要文件,具体操作如下所示:

a = tf.constant(3.0, dtype=tf.float32)
b = tf.constant(4.0) # also tf.float32 implicitly
total = a + b
writer = tf.summary.FileWriter('.')
writer.add_graph(tf.get_default_graph())

这将在当前目录中生成一个 event 文件,其名称格式如下:

events.out.tfevents.{timestamp}.{hostname}

现在,在新的终端中使用以下 shell 命令启动 TensorBoard:

tensorboard --logdir .

生成结果在命令行中有网址,拷贝到浏览器打开如下:

上一篇 下一篇

猜你喜欢

热点阅读