Numpy-Array zu Tensor und zurück.
np_array = np.array([[1, 2], [3, 4]])
tf_tensor = tf.convert_to_tensor(np_array)
back_to_numpy = tf_tensor.numpy()
Tensor zu Dataset und zurück
t = tf.constant([[1, 2], [3, 4], [5, 6]])
ds = tf.data.Dataset.from_tensor_slices(t)
# Dataset ist eine Sammlung von Tensoren
tensor_back = tf.stack(list(ds))
Numpy-Array zu Dataset und zurück
t = tf.constant([[1, 2], [3, 4], [5, 6]])
ds = tf.data.Dataset.from_tensor_slices(t) # Dataset enthält nun 3 Einträge!
restored = tf.stack([x for x in ds]Dat)
Dataset zu TF-Record und zurück (man muss die Struktur (Features) der gespeicherten Daten kennen, um sie korrekt zu parsen.)
#tf.data.Dataset → TFRecord
def _serialize_example(feature1, feature2):
feature = {
'feature1': tf.train.Feature(float_list=tf.train.FloatList(value=[feature1])),
'feature2': tf.train.Feature(int64_list=tf.train.Int64List(value=[feature2])),
# ggf. weitere Features
}
example_proto = tf.train.Example(features=tf.train.Features(feature=feature))
return example_proto.SerializeToString()
# Beispiel-Daten
feature1_list = [1.0, 2.0, 3.0]
feature2_list = [10, 20, 30]
with tf.io.TFRecordWriter('output.tfrecord') as writer:
for f1, f2 in zip(feature1_list, feature2_list):
example = _serialize_example(f1, f2)
writer.write(example)
#TFRecord → tf.data.Dataset
# Pfad zur TFRecord-Datei
tfrecord_file = 'pfad/zur/datei.tfrecord'
# Funktion zum Parsen der einzelnen Beispiele
def _parse_function(example_proto):
feature_description = {
'feature1': tf.io.FixedLenFeature([], tf.float32),
'feature2': tf.io.FixedLenFeature([], tf.int64),
# weitere Features hier
}
return tf.io.parse_single_example(example_proto, feature_description)
# TFRecord-Datei in Dataset laden
dataset = tf.data.TFRecordDataset(tfrecord_file)
dataset = dataset.map(_parse_function)