我的tensorflow学习笔记(7):简单总结

一、如何建立tensorflow模型

第一步:构建图

1、得到输入数据(dataset或placeholder)

2、定义权重(weight)和偏移(bias)

3、定义推论模型(inference model)

4、定义loss function

5、定义Optimizer

第二步:执行计算

1、初始化所有变量

2、初始化training data中的iterator/feed

3、使用inference model和training data执行计算

4、计算cost

5、调节参数,根据模型最小化/最大化cost

二、读入数据的方式

1、placeholder

tf.placeholder(dtype, shape=None, name=None)  

在计算placeholder时,必须使用feed_dict传入值。

a = tf.placeholder(tf.float32, shape=[3])
b = tf.constant([5, 5, 5], tf.float32)

# use the placeholder as you would a constant
c = a + b  # short for tf.add(a, b)
with tf.Session() as sess:
    # compute the value of c given the value of a is [1, 2, 3]
    print(sess.run(c, {a: [1, 2, 3]}))                 # [6. 7. 8.]
writer.close()

2、tf.data

import tensorflow as tf
import numpy as np

dataset = tf.data.Dataset.from_tensor_slices(np.array([1.0, 2.0, 3.0, 4.0, 5.0]))

from_tensor_slices的作用是切割第一个维度

产生迭代器有两种方式:

iterator = dataset.make_one_shot_iterator()
one_element = iterator.get_next()

iterator = dataset.make_initializable_iterator()
X, Y = iterator.get_next()
其中后一种可以多次使用,但每次重新开始都要初始化:
        sess.run(iterator.initializer) # initialize the iterator
如果一个dataset中元素被读取完了,再尝试sess.run(one_element)的话,就会抛出tf.errors.OutOfRangeError异常,这个行为与使用队列方式读取数据的行为是一致的。在实际程序中,可以在外界捕捉这个异常以判断数据是否读取完:
with tf.Session() as sess:
    try:
        while True:
            print(sess.run(one_element))
    except tf.errors.OutOfRangeError:
        print("end!")
在Eager模式中,创建Iterator的方式有所不同。是通过tfe.Iterator(dataset)的形式直接创建Iterator并迭代。迭代时可以直接取出值,不需要使用sess.run():
import tensorflow.contrib.eager as tfe
tfe.enable_eager_execution()

dataset = tf.data.Dataset.from_tensor_slices(np.array([1.0, 2.0, 3.0, 4.0, 5.0]))

for one_element in tfe.Iterator(dataset):
    print(one_element)


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值