【问题标题】:Tensorflow + google ml-engne local predict: How CSV quotes should be processed?Tensorflow + google ml-engne local predict:如何处理 CSV 报价?
【发布时间】:2018-08-09 08:38:03
【问题描述】:

我已经训练了一个 CNN 模型来预测 0/1 值并使用 google ml-engine local predict 来测试它。我的测试文件包含 2 行:

some text
"some text"

我知道这应该给我 1 和 1 作为预测结果。但是输出是 1 和 0。所以双引号很重要。 训练时 pandas.read_csv 用于创建词汇表。

pd.read_csv(filename, header=None, sep=',', names=['source', 'title'],encoding='utf-8', na_filter=False,engine='python')

使用以下命令进行预测:

gcloud ml-engine local predict --model-dir=.... --text-instances=... --format=json

我在读取 csv 进行训练时是否遗漏了一些参数,或者这是 google ml-engine 的问题?

【问题讨论】:

    标签: python pandas tensorflow google-cloud-ml


    【解决方案1】:

    您是在输入函数中使用 pandas 还是使用 tf.decode_csv?

    在您的 gcloud 预测调用中,您将输入格式设置为 json。您的意思是将其设置为 CSV 吗?

    【讨论】:

      【解决方案2】:

      大概您导出的图形包含一个decode_csv 操作以读取输入。如何处理引号将取决于参数use_quote_delim 的设置。为了说明,请考虑以下内容:

      import tensorflow as tf
      
      data = ['some text', '"some text"']
      with tf.Session() as sess:
        use_delim = tf.decode_csv(data, [['']], use_quote_delim=True)
        dont = tf.decode_csv(data, [['']], use_quote_delim=False)
        out = sess.run([use_delim, dont])
        print("use", out[0])
        print("dont", out[1])
      
      >>> ('use', [array(['some text', 'some text'], dtype=object)])
      >>> ('dont', [array(['some text', '"some text"'], dtype=object)])
      

      要获得您期望的行为,您希望导出的模型设置use_quote_delim=True(这是默认值)。

      【讨论】:

      • use_quote_delim 未使用,因此默认情况下为 true。明确设置也无济于事
      猜你喜欢
      • 2018-07-27
      • 2017-10-14
      • 2021-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多