亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何指定 tf.Data.iterator 的起點(或跳過前 X 個批次)?

如何指定 tf.Data.iterator 的起點(或跳過前 X 個批次)?

一只名叫tom的貓 2022-05-24 10:40:34
對于張量流數據集迭代器(tf.data.Iterator),跳過前 X 個批次的最佳方法是什么,但僅在第一次迭代中,而不是在指定 repeat() 時的后續迭代)?我嘗試了以下但沒有奏效:import tensorflow as tfimport pandas as pdfrom pyspark.sql import SparkSessionspark = SparkSession.builder.master('local[*]').config("spark.jars",'some/path/spark-tensorflow-connector_2.11-1.10.0.jar').getOrCreate()df = pd.DataFrame({'x': range(10), 'y': [i*2 for i in range(10)]})df = spark.createDataFrame(df)df.write.format('tfrecords').option('recordType', 'Example').mode("overwrite").save('testdata')def parse_function(proto):    feature_description = {    'x': tf.FixedLenFeature([], tf.int64),    'y': tf.FixedLenFeature([], tf.int64)    }    parsed_features = tf.parse_single_example(proto, feature_description)    x = parsed_features['x']    y = parsed_features['y']    return {'x': x, 'y': y}def load_data(filename_pattern, parse_function, batch_size=200, skip_batches=0):    files = tf.data.Dataset.list_files(file_pattern=filename_pattern, shuffle=False)    dataset = tf.data.TFRecordDataset(files)    dataset = dataset.repeat()    dataset = dataset.map(parse_function)    dataset = dataset.apply(tf.contrib.data.batch_and_drop_remainder(batch_size))    dataset = dataset.prefetch(2)    # Create an iterator    iterator = dataset.make_one_shot_iterator()    data = iterator.get_next()    with tf.Session() as sess:        for i in range(skip_batches):            sess.run(data)    return data# skip first three batchesdata = load_data('testdata/part-*', parse_function, batch_size=2, skip_batches=3)sess = tf.Session()for i in range(3):    print(sess.run(data))預期/期望:    {'y': array([12, 14]), 'x': array([6, 7])}    {'y': array([16, 18]), 'x': array([8, 9])}    {'y': array([0, 2]), 'x': array([0, 1])}實際的:    {'y': array([0, 2]), 'x': array([0, 1])}    {'y': array([4, 6]), 'x': array([2, 3])}    {'y': array([8, 10]), 'x': array([4, 5])}
查看完整描述

1 回答

?
搖曳的薔薇

TA貢獻1793條經驗 獲得超6個贊

tf.Dataset.iterator()你為什么不跳過前 X 批,而不是通過?

假設您想要 10 個批次,每個批次有 32 個元素,這意味著總共 320 個元素。因此,您可以使用tf.Dataset.skip(320)skip ) 跳過這些,它會為您提供跳過前 10 個批次的數據集。


查看完整回答
反對 回復 2022-05-24
  • 1 回答
  • 0 關注
  • 146 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號