Вопрос
Пожалуйста, объясните правильный формат record_defaults из tf.io.decode_csv.
tf.io.decode_csv record_defaults сообщает:
record_defaults Список объектов Tensor с указанными c типами. Допустимые типы: float32, float64, int32, int64, string. Один тензор для каждого столбца входной записи, либо со скалярным значением по умолчанию для этого столбца, либо с пустым вектором, если столбец требуется.
In Чтение файлов CSV в TensorFlow из Список пользователей Databricks список.
def create_file_reader_ops(filename_queue):
reader = tf.TextLineReader(skip_header_lines=1)
_, csv_row = reader.read(filename_queue)
record_defaults = [[""], [""], [0], [0], [0], [0]] # <-----
country, code, gold, silver, bronze, total = tf.decode_csv(csv_row, record_defaults=record_defaults)
features = tf.pack([gold, silver, bronze])
return features, country
Так же Как декодировать файл csv с длинными строками в тензорном потоке с помощью tf.decode_csv? .
record_defaults=[[1]]*1800
Ошибка формы decode_csv TensorFlow предполагает, что это должен быть список списка.
Ваша default_record, безусловно, является списком тензорных объектов (или объектов, конвертируемых в тензоры), но я думаю, что сообщение об ошибке сообщая, что они должны быть тензорами ранга 1, а не тензорами ранга 0 , как в вашем случае.
default_record_1 = [['./'], [-1]] # do this!
default_record_2 = ['./', -1] # this is what you do now
decoded_1 = tf.decode_csv(my_line, default_record_1)
Однако Практическое машинное обучение с помощью Scikit -Learn, Keras и TensorFlow, 2-е издание CH13 использует список, и код работает.
n_inputs = 8 # X_train.shape[-1]
@tf.function
def preprocess(line):
defs = [0.] * n_inputs + [tf.constant([], dtype=tf.float32)] <-----
fields = tf.io.decode_csv(line, record_defaults=defs)
x = tf.stack(fields[:-1])
y = tf.stack(fields[-1:])
return (x - X_mean) / X_std, y
Поэтому мне интересно, какой формат использовать и почему.