我正在尝试从CSV数据创建tfrecords
文件,然后我想使用tf.data.TFRecordDataset()
从它们创建Dataset
,然后将Dataset
馈送到tf.keras.Model
。 (实际上,我正在使用spark-tensorflow-connector直接从Spark数据帧创建tfrecords
文件。)
在fit()
method of tf.keras.Model
中,参数fit()
是输入数据。可能是:
tf.data数据集。应该返回一个元组(输入,目标)或(输入,目标,sample_weights)。
Q1:这是tf.keras.Model
知道将特征和标签分开的地方吗?,即特征是x
,标签是tf.keras.Model
。
但是,在某些示例中,在inputs
文件或targets
的构建中我看不到任何“元组”。例如,在下面的tfrecords
中,
tf.data.Dataset
...
example
Q2:那么,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)
中的tf.keras.models.Sequential()
model函数,它解析TFRecords文件(如果没有这样的解析函数,则数据无法解释)并为每个数据返回一个元组tf.keras.models.Sequential()
。然后将此函数映射到parse_and_decode
函数中的数据集。
同样地,提供给this file的数据集实际上是元组的数据集,据我所知,如果您将image, label
作为create_datasets
的输入,这正是模型将假定的结果]函数-元组model.fit
的数据集。因此,第一个将作为模型的输入,第二个将作为损失函数的目标。