首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python :将.tsv转换为TFRecord

Python :将.tsv转换为TFRecord
EN

Code Review用户
提问于 2017-06-19 19:04:15
回答 1查看 798关注 0票数 4

下面的python代码将选项卡间隔的值文件(.tsv)转换为TFRecord,希望这种方法可以加快加载数据的时间。这个任务的性能是否正确和最优,特别是在运行时间方面?

.tsv文件的格式如下,包括使其更具可读性的空格(SEMEVAL‘17训练数据集):float_value_from_0_to_5 \t string1 \t string2。所需的TFRecord条目应该将先前的值最优地存储为float ratestring sent1string sent2,以便使用任意神经网络进行适当的实现,这些神经网络将嵌入从TFRecord加载的单词。

代码语言:javascript
复制
import tensorflow as tf
import nltk
import os
import csv

def tsv_to_tfrec(file_path):
  with open(file_path, 'rb') as tsv, tf.python_io.TFRecordWriter(
        os.path.splitext(file_path)[0] + ".tfrecords") as tfrec:
    read_tsv = csv.reader(tsv, delimiter = '\t', quoting = csv.QUOTE_NONE)

    for row in read_tsv:
      if len(row) != 3:
        print("\nERROR in # of indicies: ", len(row))
        for i in range(len(row)):
          print(i, " =", row[i])
      else:
        example = tf.train.Example(features = tf.train.Features(feature = {
            "rate": tf.train.Feature(float_list=tf.train.FloatList(
                value = [float(row[0])])),
            "sent1": tf.train.Feature(bytes_list=tf.train.BytesList(
                value = nltk.word_tokenize(row[1]))),
            "sent2": tf.train.Feature(bytes_list=tf.train.BytesList(
                value = nltk.word_tokenize(row[2])))
            }))

        tfrec.write(example.SerializeToString())
EN

回答 1

Code Review用户

回答已采纳

发布于 2017-06-19 20:00:51

我不是TensorFlow方面的专家(尽管我已经开始掌握),但我注意到了以下几点:

  • 如果这是一个正确的有效TSV文件,您不应该担心检查每一行的长度??每一行都应该有相同数量的列。
  • 您还可以尝试使用TextLineReader从csv文件(如注意到这里 )中读取特性,这可能导致“解压”这些特性,并避免通过索引: rate、sent1、sent2 =tf.decode_csv(值)获取它们。
  • 如果由于某些原因,TextLineReader不适用,您可以在for循环中解压缩: rate,sent1,sent2 in read_tsv:
  • 您还可以考虑应用一些微优化,例如通过在循环之前预先查找内容来避免循环中的名称查找,例如设置Example = tf.train.Example,然后使用Example代替tf.train.Example
  • 还有一种可能性,那就是用记忆来换取速度。例如,根据您的特性的独特性,您可以在字典中“缓存”这个单词,以避免重新标记相同的句子。

还可以查看TensorFlow性能指南表演技巧

还有一些次要的PEP8代码风格冲突,比如关键字参数定义中=周围的额外空格--通过静态代码分析器(如flake8pylint )运行代码。

票数 1
EN
页面原文内容由Code Review提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codereview.stackexchange.com/questions/166194

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档