日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

PAI-TF數據轉換方法

重要

本文中含有需要您注意的重要提示信息,忽略該信息可能對您的業務造成影響,請務必仔細閱讀。

本文介紹如何將原始數據轉換為適合PAI-TF模型訓練的格式,以提升訓練效果和效率。

警告

公共云GPU服務器即將過保下線,您可以繼續提交CPU版本的TensorFlow任務。如需使用GPU進行模型訓練,請前往DLC提交任務,具體操作請參見創建訓練任務

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格式數據的分隔符。不支持數字、正負號、字母eE、小數點(.)和多字節分隔符。當使用空格作為分隔符時,多個連續空格將被視作一個分隔符。

  • 輸出:由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格式數據的分隔符。不支持數字、正負號、字母eE、小數點(.)和多字節分隔符。當使用空格作為分隔符時,多個連續空格將被視作一個分隔符。

  • 輸出:由Key/Value形式CSV序列轉換而得的稠密矩陣,默認輸出類型為FLOAT,空白處以0.0填充。

示例:將一個batchKey/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格式數據的分隔符。不支持數字、正負號、字母eE、小數點(.)和多字節分隔符。當使用空格作為分隔符時,多個連續空格將被視作一個分隔符。

  • 輸出:由Key/Value形式CSV序列轉換而得的稀疏矩陣,默認輸出類型為FLOAT。

示例:將一個batchKey/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格式數據的分隔符。不支持數字、正負號、字母eE、小數點(.)和多字節分隔符。當使用空格作為分隔符時,多個連續空格將被視作一個分隔符。

  • 輸出:由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格式數據的分隔符。不支持數字、正負號、字母eE、小數點(.)和多字節分隔符。當使用空格作為分隔符時,多個連續空格將被視作一個分隔符。

  • 輸出:由Key/Value形式CSV序列轉換而得的稠密矩陣,默認輸出類型為FLOAT,空白處以0.0填充。

示例:將一個batchCSV格式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數據。數據讀取后調用TransCSVODPS,將這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)