Я пытаюсь создать tfrecords
файлы из данных CSV, затем я хочу использовать tf.data.TFRecordDataset()
для создания Dataset
из них, а затем передать Dataset
в tf.keras.Model
. (На самом деле я использую spark-tenorflow -nector для создания tfrecords
файлов непосредственно из Spark Dataframes.)
В fit()
методе tf.keras.Model
, аргумент x
- Входные данные. Это может быть:
Набор данных tf.data. Должен возвращать кортеж либо (входы, цели) или (входы, цели, sample_weights).
Q1: Где tf.keras.Model
знает, где разделить элементы и метки? то есть, функции inputs
, метки targets
.
Однако в некоторых примерах я не мог видеть "кортеж" в сборке файлов tfrecords
или tf.data.Dataset
. Например, в следующем примере ,
def convert_to_tfrecord(input_files, output_file):
"""Converts a file to TFRecords."""
print('Generating %s' % output_file)
with tf.io.TFRecordWriter(output_file) as record_writer:
for input_file in input_files:
data_dict = read_pickle_from_file(input_file)
data = data_dict[b'data']
labels = data_dict[b'labels']
num_entries_in_batch = len(labels)
for i in range(num_entries_in_batch):
example = tf.train.Example(features=tf.train.Features(
feature={
'image': _bytes_feature(data[i].tobytes()),
'label': _int64_feature(labels[i])
}))
record_writer.write(example.SerializeToString())
...
# Read dataset from tfrecords
dataset = tf.data.TFRecordDataset(tfrecords_files)
Q2: Так как же это tf.keras.models.Sequential()
модель знает, где найти элементы и где найти метки? Почему модель не принимает метку в качестве элемента данных?