मेरे पास शब्दकोशों की सूची में संग्रहीत डेटासेट/रिकॉर्ड है। शब्दकोश बहुत जटिल हो सकता है। मैं इस सूची को TensorFlow डेटासेट API के माध्यम से लोड करना चाहता हूं। मैं यह कैसे कर सकता हूँ? मैंने ऐसा कुछ करने की कोशिश की हालांकि, यह काम नहीं कर रहा है:

import tensorflow as tf
import json

LABELS_IDS = ["cat", "dog", "animal"]

def parse_record(record):
    image = tf.io.read_file(record["_file"])
    image = tf.image.decode_jpeg(image)
    image = tf.image.convert_image_dtype(image, tf.float32)
    image = tf.image.resize(image, [224, 224])
    image = tf.image.random_flip_left_right(image, seed=None)

    labels = []
    for element in record["_categories"]:
        if element in LABELS_IDS:
            labels.append(LABELS_IDS.index(element))

    one_hot_labels = tf.reduce_sum(tf.one_hot(labels, len(LABELS_IDS)), axis=0)
    return image, one_hot_labels

records = [{"_file":"images/test.jpg", "_categories": ["cat", "animal"]}]
    
train_x = tf.data.Dataset.from_tensor_slices(records).map(parse_record)

संपादित करें:

मुझे इसका उत्तर मिल गया है, आप बस रिकॉर्ड को अलग-अलग तरीकों से मैप कर सकते हैं:

LABELS_IDS = ["cat", "dog", "animal"]
records = [{"_file":"images/test.jpg", "_categories": ["cat", "animal"]}]

def _load_files(records):
    return [record["_file"] for record in records]

def _load_labels(records):
    vectors = []
    for record in records:
        labels = []
        for element in record["_categories"]:
            if element in LABELS_IDS:
                labels.append(LABELS_IDS.index(element))

        one_hot = tf.reduce_sum(tf.one_hot(present, len(LABELS_IDS)), axis=0)
        vectors.append(one_hot.numpy())
    return vectors

def _load_data(file_path, label):
    image = tf.io.read_file(file_path)
    image = tf.image.decode_image(image, channels=3, expand_animations=False)
    return image, label

data = (
  _load_files(records),
  _load_labels(records)
)

train_x = tf.data.Dataset.from_tensor_slices(data).map(_load_data)
1
Cospel 16 मार्च 2020, 14:15
अरे @Cospel! क्या आपको यह काम मिला?
 – 
Tiago Santos
11 सितंबर 2020, 20:40
हाँ, संपादित पोस्ट देखें।
 – 
Cospel
8 जून 2021, 12:51

1 उत्तर

सबसे बढ़िया उत्तर

समुदाय के लाभ के लिए, मैं यहाँ @Cospel उत्तर जोड़ रहा हूँ

LABELS_IDS = ["cat", "dog", "animal"]
records = [{"_file":"images/test.jpg", "_categories": ["cat", "animal"]}]

def _load_files(records):
    return [record["_file"] for record in records]

def _load_labels(records):
    vectors = []
    for record in records:
        labels = []
        for element in record["_categories"]:
            if element in LABELS_IDS:
                labels.append(LABELS_IDS.index(element))

        one_hot = tf.reduce_sum(tf.one_hot(present, len(LABELS_IDS)), axis=0)
        vectors.append(one_hot.numpy())
    return vectors

def _load_data(file_path, label):
    image = tf.io.read_file(file_path)
    image = tf.image.decode_image(image, channels=3, expand_animations=False)
    return image, label

data = (
  _load_files(records),
  _load_labels(records)
)

train_x = tf.data.Dataset.from_tensor_slices(data).map(_load_data)
1
TFer 10 जून 2021, 09:53