美文网首页
2018-09-23 【机器学习笔录】TensorFlow的数据

2018-09-23 【机器学习笔录】TensorFlow的数据

作者: 狐二丶 | 来源:发表于2018-09-26 16:12 被阅读0次
    --------------------------------
    Author : ShawnDong
    updateDate :2018.9.25
    Blog : ShawnDong98.github.io
    --------------------------------

    TensorFlow的数据读取机制

    tf.train.string_input_producer(list, shuffle, num_epochs)

    这个函数需要传入一个list,系统会自动将它转换为一个文件名队列。
    shuffle指在一个epoch内文件的顺序是否被打乱。
    epoth:对于一个数据集来讲,运行一个epoch就是将这个数据集中的图片
    全部计算一遍。两个epoch就是每张图片都计算了两边。

    tf.train.start_queue_runners

    在使用tf.train.string_input_producer创建文件名队列后,整个系统其实还处于“停滞状态”,也就是说,文件名并没有真正被加入队列中。

    而使用tf.train.start_queue_runners之后,才会启动填充队列的线程,这时的系统就不再“停滞”。计算单元可以拿到数据并进行计算,整个程序就运行起来了。

    TensorFlow读取数据的具体步骤

    • 第一步, 用tf.train.string_input_producer建立队列。
    • 第二步, 通过reader.read读数据。
      tf.WholeFileReader()
      tf.FixedLengthReader()
    • 第三步,调用tf.train.start_queue_runners。
    • 最后通过sess.run()取出图片结果。

    在数据的读取中线程的同步与停止

    coord = tf.train.Coordinator()
    threads = tf.train.start_queue_runners(sess=sess, coord=coord)

    tf.train.start_queue_runners函数中有一个参数coord,这个参数叫做线程协调器,用于协调线程之间的关系。

    tf.train.start_queue_runners执行之后,会启动一个线程,线程协调器在最后负责对所有线程的接受和处理,即当一个线程结束以后,线程协调器会对所有线程发送通知,协调其完毕。

    比如在主线程结束后,加上以下内容

    coord.request_stop()
    coord.join(threads)

    TensorBoard:

    本来以为会很复杂,实际过程比我想象的简单,输入命令:

    tensorboard --logdir=你训练数据保存的文件夹路径

    打开服务器的6006端口,在浏览器里输入

    服务器的IP地址:6006

    就可以看到TensorBoard了(本人的服务器是Google的deep learning服务器,不知是否因为这个原因使配置变得简单了)。

    相关文章

      网友评论

          本文标题:2018-09-23 【机器学习笔录】TensorFlow的数据

          本文链接:https://www.haomeiwen.com/subject/hcdqoftx.html