Tensorflow: وثائق غير واضحة لسلوك التسطيح الكثيف tf.layers.d

تم إنشاؤها على ٧ مارس ٢٠١٧  ·  3تعليقات  ·  مصدر: tensorflow/tensorflow

تنص الوثائق:

ملاحظة: إذا كان موتر inputs له رتبة أكبر من 2 ، فهو كذلك
بالارض قبل ضرب المصفوفة الأولية في w .

ومع ذلك ، إرجاع موتر التالي بالشكل shape=(2, 2, 2, 400) ، كما لو لم يتم تسطيح الإدخال
tf.layers.dense(tf.placeholder(tf.float32, (2,2,2,2)), 400)

docs-bug

التعليق الأكثر فائدة

آه شكرًا ، اتصال tensordot يجعل الأمر أكثر وضوحًا.

يبدو tf.dense يتصرف من خلال التعاقد مع آخر مؤشر لموتّر الإدخال مع أول مؤشر لموتّر الأوزان. كانت كلمة "مسطحة" محيرة ، ولست متأكدًا مما تعنيه هنا

مثال لعبة صنعتها لنفسي لترجمة tf.dense إلى ما يعادل np.tensordot

tf.reset_default_graph()
x0 = np.ones((3, 3, 3))
w0 = np.arange(6).reshape((3, 2))
x = tf.constant(x0)
y = tf.layers.dense(x, 2)
var_dict = {v.op.name: v for v in tf.global_variables()}
assert(var_dict["dense/kernel"].get_shape() == (3, 2))
sess = tf.InteractiveSession()
sess.run(tf.global_variables_initializer())
sess.run(tf.assign(var_dict["dense/kernel"], w0))
sess.run(tf.assign(var_dict["dense/bias"], np.zeros((2,))))

expected_y0 = np.tensordot(x0,w0,axes=[(2,),(0,)])
y0 = sess.run(y)
np.testing.assert_allclose(y0, expected_y0)

ال 3 كومينتر

عفوًا ، آسف ، لم أقصد إزالة نفسي. التحقيق داخليًا ، كان يحاول إضافة الشخص الذي أعتقد أنه مسؤول.

لذلك ، بعد التحقيق ، ما قيل لي هو أنه يتصرف مثل tensordot ، وبالتالي فإن السلوك والوثائق الحالية صحيحة - وقال المهندس الذي تحدثت إليه إنهم يعتقدون أنه يمكننا استخدام لغة أكثر دقة ولكن ذلك لن يكون ' تساعد بالضرورة لأن اللغة الحالية واضحة ولا لبس فيها عندما تكون في سياقها. (راجع tensordot: https://docs.scipy.org/doc/numpy/reference/generated/numpy.tensordot.html)

إذا كنت ترغب في محاولة إجراء طلب سحب بنفسك للقيام ببعض إعادة الصياغة ، فسيكون ذلك موضع ترحيب ، لكنني أغلق هذا الخطأ في الوقت الحالي لأننا لن نفعل أي شيء حيال ذلك داخليًا.

آه شكرًا ، اتصال tensordot يجعل الأمر أكثر وضوحًا.

يبدو tf.dense يتصرف من خلال التعاقد مع آخر مؤشر لموتّر الإدخال مع أول مؤشر لموتّر الأوزان. كانت كلمة "مسطحة" محيرة ، ولست متأكدًا مما تعنيه هنا

مثال لعبة صنعتها لنفسي لترجمة tf.dense إلى ما يعادل np.tensordot

tf.reset_default_graph()
x0 = np.ones((3, 3, 3))
w0 = np.arange(6).reshape((3, 2))
x = tf.constant(x0)
y = tf.layers.dense(x, 2)
var_dict = {v.op.name: v for v in tf.global_variables()}
assert(var_dict["dense/kernel"].get_shape() == (3, 2))
sess = tf.InteractiveSession()
sess.run(tf.global_variables_initializer())
sess.run(tf.assign(var_dict["dense/kernel"], w0))
sess.run(tf.assign(var_dict["dense/bias"], np.zeros((2,))))

expected_y0 = np.tensordot(x0,w0,axes=[(2,),(0,)])
y0 = sess.run(y)
np.testing.assert_allclose(y0, expected_y0)
هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات