tf.keras.Model 如何区分 tf.data.Dataset 和 TFRecords 中的特征和标签?

Tyl*_*归玉门 5 tensorflow tensorflow-datasets tf.keras tensorflow2.0

我正在尝试从 CSV 数据创建tfrecords文件,然后我想使用它们tf.data.TFRecordDataset()来创建文件,然后将其提供给. (事实上​​,我正在使用Spark-tensorflow-connector直接从 Spark Dataframes创建文件。)DatasetDatasettf.keras.Modeltfrecords

fit()的方法tf.keras.Model中,参数x是输入数据。它可能是:

tf.data 数据集。应该返回(输入,目标)或(输入,目标,样本权重)的元组。

Q1:这里tf.keras.Model知道在哪里分离特征和标签吗?即,特征是inputs,标签是targets

然而,在某些示例中,我在文件tfrecordstf.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())
Run Code Online (Sandbox Code Playgroud)

...

# Read dataset from tfrecords
dataset = tf.data.TFRecordDataset(tfrecords_files)
Run Code Online (Sandbox Code Playgroud)

Q2:那么这个模型如何知道在哪里可以找到特征以及在哪里可以找到标签?tf.keras.models.Sequential()为什么模型不将“标签”作为数据特征?

xdu*_*ch0 5

您需要考虑完整的代码示例,即完成训练的其他文件等。主要的是该文件parse_and_decode中的函数,该函数解析 TFRecords 文件(没有这样的解析函数,则无法解释数据)并返回每条数据的元组。然后将该函数映射到函数中的数据集上。image, labelcreate_datasets

因此,给出的数据集model.fit实际上是元组的数据集,据我所知,如果您tf.data.Dataset向函数提供 a 作为输入fit- 元组数据集,这正是模型将假设的情况inputs, labels。因此,第一个将作为模型的输入,第二个作为损失函数的目标。