عامر ابراهيم نشر 6 سبتمبر 2021 أرسل تقرير نشر 6 سبتمبر 2021 (معدل) لديّ .tfrecord لكني لا أعرف كيف تمت هيكلته. لذا كيف يمكننا فحص المخطط لفهم ما يحتويه ملف .tfrecord؟ r = tensorflow.TFRecordReader() myfile = tensorflow.train.string_input_producer("f.tfrecord") _, serialized_record = r.read(myfile) ... كيفية فحص serialized_record... تم التعديل في 6 سبتمبر 2021 بواسطة عامر ابراهيم 2 اقتباس
2 Ali Haidar Ahmad نشر 6 سبتمبر 2021 أرسل تقرير نشر 6 سبتمبر 2021 حسناً لنبدأ بتوضيح تنسيق TFRecord : هو تنسيق بسيط لتخزين سلسلة من السجلات الثنائية. مخازن البروتوكول هي مكتبة عبر الأنظمة الأساسية ومتعددة اللغات لتسلسل فعال للبيانات المنظمة. يتم تعريف رسائل البروتوكول بواسطة ملفات .proto ، وهي غالباً أسهل طريقة لفهم نوع الرسالة. الرسالة tf.train.Example (أو protobuf) هي نوع رسالة مرن يمثل تعيين {"string": value} . إنه مصمم للاستخدام مع TensorFlow ويتم استخدامه في جميع واجهات برمجة التطبيقات عالية المستوى مثل TFX . بشكل عام ، يجب أن تقوم بتقسيم بياناتك عبر ملفات متعددة حتى تتمكن من موازنة الإدخال / الإخراج (داخل مضيف واحد أو عبر مضيفين متعددين). القاعدة الأساسية هي أن يكون لديك ما لا يقل عن 10 أضعاف عدد الملفات التي سيكون هناك مضيفون يقرؤون البيانات. وفي الوقت نفسه ، يجب أن يكون كل ملف كبيراً بدرجة كافية (10 ميجا بايت على الأقل و 100 ميجا بايت على الأقل) حتى تتمكن من الاستفادة من الجلب المسبق للإدخال / الإخراج. على سبيل المثال ، لنفترض أن لديك X جيجابايت من البيانات وأنك تخطط للتدريب على ما يصل إلى N مضيفين. من الناحية المثالية ، يجب أن تقوم بتقسيم البيانات إلى ~ 10*N الملفات ، طالما أن ~ X/(10*N) هي 10 ميجا بايت + (وبشكل مثالي 100 ميجا بايت +). إذا كان أقل من ذلك ، فقد تحتاج إلى إنشاء عدد أقل من الأجزاء لمقايضة مزايا التوازي ومزايا الجلب المسبق للإدخال / الإخراج. الآن لقراءة ملف TFRecord : يمكن تحليل الموترات التي تمت سلسلتها "serialized tensors" باستخدام tf.train.Example.ParseFromString: filenames = [filename] raw_dataset = tf.data.TFRecordDataset(filenames) raw_dataset # <TFRecordDatasetV2 shapes: (), types: tf.string> for raw_record in raw_dataset.take(1): example = tf.train.Example() example.ParseFromString(raw_record.numpy()) print(example) """ features { feature { key: "feature0" value { int64_list { value: 1 } } } feature { key: "feature1" value { int64_list { value: 1 } } } feature { key: "feature2" value { bytes_list { value: "dog" } } } feature { key: "feature3" value { float_list { value: -0.9885607957839966 } } } } """ كما يمكنك قراءتها من خلال tf_record_iterator مثلاً: import tensorflow.python_io.tf_record_iterator as record import tensorflow as tf for sample in record("file.tfrecord"): output = tf.train.SequenceExample.FromString(sample) break # أزلها لعرض كل العينات output #وإلا سيُظهر لك محتوى العينة الأولى # لفحص الميزات "الفيتشرز" الفردية باستخدام مفاتيحها output.context.feature["key"] #feature_lists من أجل output.feature_lists.feature_list["key"] اقتباس
1 محمد أبو عواد نشر 6 سبتمبر 2021 أرسل تقرير نشر 6 سبتمبر 2021 بالنسبة إلى TF 2.0 يمكنك استخدام الكود الآتي import tensorflow as tf raw_dataset = tf.data.TFRecordDataset("path-to-file") for raw_record in raw_dataset.take(1): example = tf.train.Example() example.ParseFromString(raw_record.numpy()) print(example) أو يمكنك استخدام الكود الآتي import tensorflow as tf for example in tf.python_io.tf_record_iterator("data/foobar.tfrecord"): print(tf.train.Example.FromString(example)) يمكنك اضافة الكود التالي أيضا from google.protobuf.json_format import MessageToJson ... jsonMessage = MessageToJson(tf.train.Example.FromString(example)) اقتباس
السؤال
عامر ابراهيم
لديّ .tfrecord لكني لا أعرف كيف تمت هيكلته. لذا كيف يمكننا فحص المخطط لفهم ما يحتويه ملف .tfrecord؟
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.