Şu anda büyük bir csv dosyasında (60 milyondan fazla satır ile> 70GB) bir model eğitmeye çalışıyorum. Bunu yapmak için tf.contrib.learn.read_batch_examples kullanıyorum. Bu işlevin verileri nasıl okuduğunu anlamakta zorlanıyorum. Örneğin, 50.000'lik bir toplu iş boyutu kullanıyorsam, dosyanın ilk 50.000 satırını okuyor mu? Tüm dosya (1 dönem) üzerinde döngü istiyorum eğer tahminci.fit yöntemi için num_rows / batch_size = 1.200 adım sayısını kullanmak zorunda mıyım?
Şu anda kullanılan im işlevini İşte:
def input_fn(file_names, batch_size):
# Read csv files and create examples dict
examples_dict = read_csv_examples(file_names, batch_size)
# Continuous features
feature_cols = {k: tf.string_to_number(examples_dict[k],
out_type=tf.float32) for k in CONTINUOUS_COLUMNS}
# Categorical features
feature_cols.update({
k: tf.SparseTensor(
indices=[[i, 0] for i in range(examples_dict[k].get_shape()[0])],
values=examples_dict[k],
shape=[int(examples_dict[k].get_shape()[0]), 1])
for k in CATEGORICAL_COLUMNS})
label = tf.string_to_number(examples_dict[LABEL_COLUMN], out_type=tf.int32)
return feature_cols, label
def read_csv_examples(file_names, batch_size):
def parse_fn(record):
record_defaults = [tf.constant([''], dtype=tf.string)] * len(COLUMNS)
return tf.decode_csv(record, record_defaults)
examples_op = tf.contrib.learn.read_batch_examples(
file_names,
batch_size=batch_size,
queue_capacity=batch_size*2.5,
reader=tf.TextLineReader,
parse_fn=parse_fn,
#read_batch_size= batch_size,
#randomize_input=True,
num_threads=8
)
# Important: convert examples to dict for ease of use in `input_fn`
# Map each header to its respective column (COLUMNS order
# matters!
examples_dict_op = {}
for i, header in enumerate(COLUMNS):
examples_dict_op[header] = examples_op[:, i]
return examples_dict_op
İşte modeli eğitmek için kullanılan kod:
def train_and_eval():
"""Train and evaluate the model."""
m = build_estimator(model_dir)
m.fit(input_fn=lambda: input_fn(train_file_name, batch_size), steps=steps)
Fit işlevini aynı input_fn ile tekrar çağırırsam ne olur? Dosyanın başlangıcından tekrar başlıyor mu yoksa son durduğu satırı hatırlayacak mı?