اذهب إلى المحتوى

السؤال

Recommended Posts

  • 1
نشر

يمكنك استخدام الدالة tf.data.Dataset.from_generator لتحويل أي iterable في بايثون (أي قوائم أو قواميس أو tubles أو set) إلى Dataset ولها الشكل التالي:

from_generator(
    generator, output_types=None, output_shapes=None
)
#كما ذكرنا iter الوسيط الأول هو أي كائن 
# output_shapes: None أبعاد المخرجات وفي حالتك كونها أحجام مختلفة نضع 
# output_types: نمط الإخراج

لتطبيقها على مثالك كالتالي:

import tensorflow as tf
li = [[1,11], [1,2,3]]
#from_generator استخدام الدالة 
#none كون الأحجام مختلفة نضع المخرجات 
dataset = tf.data.Dataset.from_generator(lambda: li, tf.int32, output_shapes=[None])
# وسنستعرضها الآن
iterator = dataset.make_one_shot_iterator()
next_element = iterator.get_next()
with tf.Session() as sess:
  print(sess.run(next_element))  # '[1,11]'
  print(sess.run(next_element))  # '[1,2,3]'

كما يمكنك استخدام الدالة from_tensor_slices كالتالي:

dataset = tf.data.Dataset.from_tensor_slices(tf.ragged.constant(li))
# عرضها
for s in dataset:
  print(s)
"""
<tf.RaggedTensor [[1, 11]]>
<tf.RaggedTensor [[1, 2, 3]]>
"""
  • 1
نشر

بالاضافة لاجابة علي، اذا كنت تستخدم tensorflow 2 فهناك طريقة أبسط وأسرع من استخدام generator عن طريق التعامل مع Tensor مباشرة كالتالي:

t = [[[4,2]],
     [[3,4,5]]]

rt=tf.ragged.constant(t)
dataset = tf.data.Dataset.from_tensor_slices(rt)

for x in dataset:
  print(x)

>>> <tf.RaggedTensor [[4, 2]]>
>>> <tf.RaggedTensor [[3, 4, 5]]>

والنسخ الأحدث تستطيع تحويلها ببساطة كالتالي: 

dataset = tf.data.Dataset.from_tensor_slices([1, 2, 3])
for element in dataset:
  print(element)
>>> tf.tensor( 1 ,shape=(), dtype=int32)
>>> tf.tensor( 2 ,shape=(), dtype=int32)
>>> tf.tensor( 3 ,shape=(), dtype=int32)

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...