详情页标题前

阿里云人工智能平台PAIPAI-TF数据转换方法-云淘科技

详情页1

本文为您介绍PAI-TF数据转换方法。

trans_csv_id2sparse Python接口

将标记有效位置的CSV字符串集合转换成为稀疏矩阵

trans_csv_id2sparse(records, max_id, id_as_value=True, field_delim=”,”)
  • 输入以下参数:
    参数 是否必选 描述
    records 类型STRING数组待解析CSV字符串数组(表),以CSV格式由分隔符分隔。
    max_id 类型INT64稀疏矩阵的最大列数,用于设定输出中的dense_shape值。如果实际ID大于或等于dense_shape值,则报错。
    id_as_value 类型BOOL,默认为True,将Index编号作为稀疏矩阵中有效点的值,类型为INT64。无特殊情况不建议更改为False。
    field_delim 类型STRING,默认为英文逗号(,)。CSV格式数据的分隔符。不支持数字、正负号、字母e和E、小数点(.)和多字节分隔符。当使用空格作为分隔符时,多个连续空格将被视作一个分隔符。
  • 输出:由Index CSV序列转换而得的Sparse Tensor,Value类型为INT64。

示例:将一个batch的存有Index数据的STRING转换成一个sparse tensor。

  • 输入:
    [“2,10”,“7”,“0,8”]
  • 需求:

    矩阵列宽度为20,有效点填入原Index。

  • 代码:
    outsparse = tf.trans_csv_id2sparse([“2,10”,“7”,“0,8”], 20)
  • 返回结果:
    SparseTensor(
    indices=[[0,2],[0,10],[1,7],[2,0],[2,8]],
    values=[2, 10, 7, 0, 8],
    dense_shape=[3,20])

trans_csv_kv2dense Python接口

将以Key/Value形式标记有效位置和值的CSV字符串集合转换成为稠密矩阵。

trans_csv_kv2dense(records, max_id, field_delim=”,”)
  • 输入以下参数:
    参数 是否必选 描述
    records 类型STRING数组待解析CSV字符串数组(列表),以CSV格式由分隔符分隔。每一个数据项均为以冒号(:)分隔的Key/Value形式数据,否则报错。
    max_id 类型INT64输出的稠密矩阵的列数。如果实际ID大于或等于列数,则报错。
    field_delim 类型STRING,默认为英文逗号(,)。CSV格式数据的分隔符。不支持数字、正负号、字母e和E、小数点(.)和多字节分隔符。当使用空格作为分隔符时,多个连续空格将被视作一个分隔符。
  • 输出:由Key/Value形式CSV序列转换而得的稠密矩阵,默认输出类型为FLOAT,空白处以0.0填充。

示例:将一个batch以Key/Value形式Index: Value存储的STRING转换成为一个稠密矩阵。

  • 输入:
    [“1:0.1,2:0.2,4:0.4,10:1.0”,
    “0:0.22,3:0.33,9:0.99”,
    “2:0.24,7:0.84,8:0.96” ]
  • 需求:

    列宽设置为12。

  • 代码:
    outmatrix = tf.trans_csv_kv2dense(
    [“1:0.1,2:0.2,4:0.4,10:1.0”,
     “0:0.22,3:0.33,9:0.99”,
     “2:0.24,7:0.84,8:0.96” ] , 12)
  • 返回结果:
    [[0.0, 0.1, 0.2, 0.0, 0.4, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0]
    [0.22, 0.0, 0.0, 0.33, 0.0, 0.0, 0.0, 0.0, 0.0, 0.99, 0.0, 0.0]
    [0.0, 0.0, 0.24, 0.0, 0.0, 0.0, 0.0, 0.84, 0.96, 0.0, 0.0, 0.0]]

trans_csv_kv2sparse Python接口

将以Key/Value形式标记有效位置和值的CSV字符串集合转换成为稀疏矩阵。

trans_csv_kv2sparse(records, max_id, field_delim=”,”)
  • 输入以下参数:
    参数 是否必选 描述
    records 类型STRING数组待解析CSV字符串数组(列表),以CSV格式由分隔符分隔。每一个数据项均为以冒号(:)分隔的Key/Value形式数据,否则报错。当使用空格作为分隔符时,多个连续空格将被视作一个分隔符。
    max_id 类型INT64稀疏矩阵的最大列数,用于设定输出中的dense_shape值。如果实际ID大于或等于dense_shape值,则报错。
    field_delim 类型STRING,默认为英文逗号(,)。CSV格式数据的分隔符。不支持数字、正负号、字母e和E、小数点(.)和多字节分隔符。当使用空格作为分隔符时,多个连续空格将被视作一个分隔符。
  • 输出:由Key/Value形式CSV序列转换而得的稀疏矩阵,默认输出类型为FLOAT。

示例:将一个batch以Key/Value形式Index: Value存储的STRING转换成为一个稀疏矩阵。

  • 输入:
    [“1:0.1,2:0.2,4:0.4,10:1.0”,
    “0:0.22,3:0.33,9:0.99”,
    “2:0.24,7:0.84,8:0.96” ]
  • 需求:

    列宽设置为20,生成稀疏矩阵Tensor。

  • 代码:
    outsparse = tf.trans_csv_kv2sparse(
    [“1:0.1,2:0.2,4:0.4,10:1.0”,
     “0:0.22,3:0.33,9:0.99”,
     “2:0.24,7:0.84,8:0.96” ] , 20)
  • 返回结果:
    SparseTensor(
    indices=[[0,1],[0,2],[0,4],[0,10],[1,0],[1,3],[1,9],[2,0],[2,7],[2,8]],
    values=[0.1, 0.2, 0.4, 1.0, 0.22, 0.33, 0.99, 0.24, 0.84, 0.96],
    dense_shape=[3,20])

trans_csv_id2dense Python接口

将标记有效位置的CSV字符串集合转换成为稠密矩阵。

trans_csv_id2dense(records, max_id, id_as_value=False, field_delim=”,”)
  • 输入以下参数:
    参数 是否必选 描述
    records 类型STRING数组待解析CSV字符串数组(列表),以CSV格式由分隔符分隔。
    max_id 类型INT64输出的稠密矩阵的列数。如果实际ID大于或等于列数,则报错。
    id_as_value 类型BOOL,默认为False,稀疏矩阵中有效点的值将会填入int64(1)。
    field_delim 类型STRING,默认为英文逗号(,)。CSV格式数据的分隔符。不支持数字、正负号、字母e和E、小数点(.)和多字节分隔符。当使用空格作为分隔符时,多个连续空格将被视作一个分隔符。
  • 输出:由Index CSV序列转换而得的稠密矩阵,类型为INT64,空白处以0值填充。

示例:将一个batch的存有Index数据的STRING转换成一个稠密矩阵:

  • 输入:
    [“2,10”,“7”,“0,8”]
  • 需求:

    需求:列宽设置为12,有效点填入1。

  • 代码:
    outmatrix = tf.trans_csv_id2dense(
    [“2,10”,“7”,“0,8”], 12)
  • 返回结果:
    [[0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0]
    [0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0]
    [1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0]]

trans_csv_to_dense Python接口

将由数值组成的CSV字符串集合转换成为稠密矩阵。

trans_csv_to_dense(records, max_id, field_delim=”,”)
  • 输入以下参数:
    参数 是否必选 描述
    records 类型STRING数组待解析CSV字符串数组(列表),以CSV格式由分隔符分隔。
    max_id 类型INT64输出的稠密矩阵的列数。如果实际CSV字符串的列数大于或等于列数,则报错。
    field_delim 类型STRING,默认为英文逗号(,)。CSV格式数据的分隔符。不支持数字、正负号、字母e和E、小数点(.)和多字节分隔符。当使用空格作为分隔符时,多个连续空格将被视作一个分隔符。
  • 输出:由Key/Value形式CSV序列转换而得的稠密矩阵,默认输出类型为FLOAT,空白处以0.0填充。

示例:将一个batch的CSV格式STRING转换成为一个稠密矩阵。

  • 输入:
    [“0.1,0.2,0.4,1.0”,
    “0.22,0.33,0.99”,
    “0.24,0.84,0.96” ]
  • 需求:

    列宽设置为6。

  • 代码:
    outmatrix = tf.trans_csv_to_dense(
    [“0.1,0.2,0.4,1.0”,
     “0.22,0.33,0.99”,
     “0.24,0.84,0.96” ] , 6)
  • 返回结果:
    [[0.1, 0.2, 0.4, 1.0, 0.0, 0.0]
    [0.22, 0.33, 0.99, 0.0, 0.0, 0.0]
    [0.24, 0.84, 0.96, 0.0, 0.0, 0.0]]

代码实例

以下代码通过TensorFlow从存放在ODPS的数据表中读取数据。数据共有6列,第1列为ID,第2列为Key/Value格式的CSV数据,后4列为Index格式的CSV数据。数据读取后调用TransCSV的ODPS,将这5列数据分别转换为1个稠密矩阵和4个稀疏矩阵,用于模型训练。

import tensorflow as tf
import numpy as np
def read_table(filename_queue):
    batch_size = 128
    reader = tf.TableRecordReader(csv_delimiter=';', num_threads=8, capacity=8*batch_size)
    key, value = reader.read_up_to(filename_queue, batch_size)
    values = tf.train.batch([value], batch_size=batch_size, capacity=8*capacity, enqueue_many=True, num_threads=8)
    record_defaults = [[1.0], [""], [""], [""], [""], [""]]
    feature_size = [1322,30185604,43239874,5758226,41900998]
    col1, col2, col3, col4, col5, col6 = tf.decode_csv(values, record_defaults=record_defaults, field_delim=';')
    col2 = tf.trans_csv_kv2dense(col2, feature_size[0])
    col3 = tf.trans_csv_id2sparse(col3, feature_size[1])
    col4 = tf.trans_csv_id2sparse(col4, feature_size[2])
    col5 = tf.trans_csv_id2sparse(col5, feature_size[3])
    col6 = tf.trans_csv_id2sparse(col6, feature_size[4])
    return [col1, col2, col3, col4, col5, col6]
if __name__ == '__main__':
    tf.app.flags.DEFINE_string("tables", "", "tables")
    tf.app.flags.DEFINE_integer("num_epochs", 1000, "number of epoches")
    FLAGS = tf.app.flags.FLAGS
    table_pattern = FLAGS.tables
    num_epochs = FLAGS.num_epochs
    filename_queue = tf.train.string_input_producer(table_pattern, num_epochs)
    train_data = read_table(filename_queue)
    init_global = tf.global_variables_initializer()
    init_local = tf.local_variables_initializer()
    with tf.Session() as sess:
      sess.run(init_global)
      sess.run(init_local)
      coord = tf.train.Coordinator()
      threads = tf.train.start_queue_runners(sess=sess, coord=coord)
      for i in range(1000):
        sess.run(train_data)
      coord.request_stop()
      coord.join(threads)

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家

阿里云企业补贴进行中: 马上申请

腾讯云限时活动1折起,即将结束: 马上收藏

同尘科技为腾讯云授权服务中心。

购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠

转转请注明出处:https://www.yunxiaoer.com/164505.html

(0)
上一篇 2023年12月10日 上午6:27
下一篇 2023年12月10日 上午6:28
详情页2

相关推荐

  • 阿里云日志服务SLS多维指标智能巡检-云淘科技

    日志服务提供智能巡检功能,用于对监控指标或业务日志等数据进行全自动、智能化、自适应的异常巡检。本文介绍如何通过智能巡检功能,对多维指标进行巡检与打标反馈。 前提条件 已采集EIP指标数据到名为eip-log的源Logstore。具体操作,请参见数据采集概述。 已配置源Logstore的索引。具体操作,请参见创建索引。 已创建智能异常分析实例。具体操作,请参见…

    2023年12月10日
  • 阿里云对象存储OSS使用OSS中的数据作为机器学习的训练样本-云淘科技

    本文介绍如何将对象存储OSS里面的数据作为机器学习PAI的训练样本。 说明 本文由 龙临@阿里云 提供,仅供参考。 背景信息 本文通过OSS与PAI的结合,为一家传统的文具零售店提供决策支持。本文涉及的具体业务场景(场景与数据均为虚拟)如下: 一家传统的线下文具零售店,希望通过数据挖掘寻找强相关的文具品类,帮助合理调整文具店的货架布局。但由于收银设备陈旧,是…

    阿里云对象存储 2023年12月10日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 阿里云日志服务SLS导入Elasticsearch数据-云淘科技

    本文介绍导入Elasticsearch数据到日志服务所涉及的使用限制。 采集限制 限制项 说明 单条数据大小 单条数据最大为3 MB。数据大小超过限制时,该数据会被丢弃。 数据处理流量观测仪表盘中的写失败条数代表被丢弃的数据条数。如何查看,请参见查看导入配置。 数据延迟 采用自动导入增量数据模式时,最新写入Elasticsearch的数据不会立即被导入到日志…

    阿里云日志服务SLS 2023年12月10日
  • 阿里云日志服务SLS消费组监控与告警-云淘科技

    您可以通过日志服务控制台查看日志消费的状态并设置告警。 前提条件 已开通服务日志中的重要日志。具体操作,请参见开通服务日志。背景信息一个消费组包含多个消费者,每个消费者消费Logstore中的一部分Shard。同一个消费组下面的消费者共同消费一个Logstore中的日志数据,消费者之间不会重复消费数据。 Shard数据模型可以简单理解为一个队列,新写入的数据…

    2023年12月10日
  • 阿里云日志服务SLS导入Kafka数据-云淘科技

    本文介绍如何将Kafka数据导入到日志服务,实现数据的查询分析、加工等操作。 前提条件 已有可用的Kafka集群。 已创建Project和Logstore。具体操作,请参见创建Project和创建Logstore。 版本说明 目前,只支持Kafka 2.2.0及以上版本。 创建数据导入配置 登录日志服务控制台。 在接入数据区域的数据导入页签中,单击Kafka…

    阿里云日志服务SLS 2023年12月10日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
本站为广大会员提供阿里云、腾讯云、华为云、百度云等一线大厂的购买,续费优惠,保证底价,买贵退差。