发布时间: 2018-12-06 15:57:57
6.1 实验介绍
6.1.1 关于本实验
关于 TensorFlow 读取数据,官网共给出了三种方法,如:供给数据,从文件读取数据,预加载数据。本实验主要实现了从文件中读取数据这种方法。
6.1.2 实验目的
理解 TensorFlow 的读取数据的方法。
理解如何利从文件中读取数据。
6.1.3 实验介绍
预加载数据及供给数据适用于数据量很小的情况,当运行大型数据会十分小耗内存,因此最好采用从文件读取数据。TensorFlow 可读取的文件类型包括 csv 文件,二进制文件,TFRecords 文件、图像文件等。本实验读取 csv 文件。
6.1.4 实验步骤
步骤 1 登陆华为云。
步骤 2 点击右上方的控制台。
步骤 3 选择弹性云服务器,网页中会显示该弹性云的可进行的操作,选择远程登录。即登录到弹性云服务器。
步骤 4 输入指令 ll,查看当前目录下的文件。
步骤 5 输入命令:vi dealdatas.py,创建新的 Python 脚本。步骤 6 输入命令 i,进入编辑模式开始编辑,输入脚本内容。步骤 7 输入命令 :wq!,保存并退出。
步骤 8 输入命令 cat dealdatas.py 查看代码。
步骤 9 运行测试。
输入命令:python3 dealdatas.py。
6.2 实验过程
6.2.1 设置编码说明
#coding:utf-8
6.2.2 导入模块
import tensorflow as tf
6.2.3 从文件中读取数据
filename_queue = tf.train.string_input_producer(["tf_read.csv"]) #读取已有数据
reader = tf.TextLineReader()
文件中数据如下,共 30 行数据:
-0.7615.67-0.1215.67-0.4812.52-0.0612.511.339.110.129.1-0.8820.35-0.1820.36-0.253.99-0.013.99-0.8726.25-0.2326.25-1.032.87-0.032.87-0.517.81-0.047.81-1.5714.46-0.2314.46-0.110.02-0.0110.02-0.568.92-0.058.92-1.24.1-0.054.1-0.775.15-0.045.15-0.884.48-0.044.48-2.710.82-0.310.82-1.232.4-0.032.4-0.775.16-0.045.15-0.816.15-0.056.15-0.65.01-0.035-1.254.75-0.064.75-2.537.31-0.197.3-1.1516.39-0.1916.39-1.75.19-0.095.18-0.623.23-0.023.22-0.7417.43-0.1317.41-0.7715.41-0.1215.41047047.010.253.980.013.98-1.19.01-0.19.01-1.023.87-0.043.87
6.2.4 获取队列值
#获取队列值
key, value = reader.read(filename_queue) # key 返回的是读取文件和行数信息
# value 是按行读取到的原始字符串,送到下面的 decoder 去解析
#key 是文件信息和当前读取的行数,value 是原始字符串。
record_defaults = [[1.], [1.], [1.], [1.]]# 这里的数据类型决定了读取的数据类型,而且必须是 list 形式
col1, col2, col3, col4 = tf.decode_csv(value, record_defaults=record_defaults)#
解析出的每一个属性都是 rank 为 0 的标量
features = tf.stack([col1, col2, col3])
6.2.5 初始化
init_op = tf.global_variables_initializer() local_init_op = tf.local_variables_initializer()
6.2.6 启动会话
with tf.Session() as sess:
#启动 session,执行初始化操作
sess.run(init_op) sess.run(local_init_op)
# Start populating the filename queue.开启一个协调器coord = tf.train.Coordinator()
#使用 start_queue_runners 启动队列填充
threads = tf.train.start_queue_runners(coord=coord)
#
try:
for i in range(30):
example, label = sess.run([features, col4]) print(example)
# print(label)
except tf.errors.OutOfRangeError: print('Done !!!')
#如果读取到文件队列末尾会抛出此异常
finally: #协调器 coord 发出所有线程中指信号
coord.request_stop()
print('all threads are asked to stop!') coord.join(threads)
print('all threads are stopped!')
#coord.request_stop()来发出终止所有线程的命令,使用 coord.join(threads)把线程加入主线程,等待 threads 结束。
6.2.7 实验结果
[-0.76 15.67 -0.12]
[-0.48 12.52 -0.06]
[1.33 9.11 0.12]
[-0.88 20.35 -0.18]
[-0.25 3.99 -0.01]
[-0.87 26.25 -0.23]
[-1.03 2.87 -0.03]
[-0.51 7.81 -0.04]
[-1.57 14.46 -0.23]
[-1.000e-01 1.002e+01 -1.000e-02] [-0.56 8.92 -0.05]
[-1.2 4.1 -0.05]
[-0.77 5.15 -0.04]
[-0.88 4.48 -0.04]
[-2.7 10.82 -0.3 ]
[-1.23 2.4 -0.03]
[-0.77 5.16 -0.04]
[-0.81 6.15 -0.05]
[-0.6 5.01 -0.03]
[-1.25 4.75 -0.06]
[-2.53 7.31 -0.19]
[-1.15 16.39 -0.19]
[-1.7 5.19 -0.09]
[-0.62 3.23 -0.02]
[-0.74 17.43 -0.13]
[-0.77 15.41 -0.12]
[ 0. 47. 0.]
[0.25 3.98 0.01]
[-1.1 9.01 -0.1 ]
[-1.02 3.87 -0.04]
6.3 实例描述
本实验主要是根据不同的文件格式选取不同的函数进行操作,从 CSV 文件中读取数据, 需要使用 TextLineReader 和 decode_csv 操作。通过对文件的操作,完成数据的读取与处理。
上一篇: {HTML5}DOM 和 CSS 操作-第一节-DOM 简介
下一篇: {Springboot}微服务介绍