به بخش پرسش و پاسخ یادگیری عمیق خوش آمدید,
این نسخه آزمایشی سایت است.
لطفا به نکات زیر توجه کنید:
  • برای ارتباط با مدیران میتوانید از صفحه مدیران اقدام کنید.
  • سوال و جواب ها باید به زبان فارسی باشند. استفاده از زبان انگلیسی یا فینگلیش برای پاسخ دادن مجاز نیست.
  • لطفا بعد از پرسش سوال لینک سوال خود را در گرو تلگرام (Iran Deep Learning Group) معرفی کنید تا سریعتر به جواب برسید. برای دسترسی به آخرین لینک از منابع یادگیری استفاده کنید
  • لطفا بجای عکس از متن استفاده کنید. اگر متون طولانی هستند از سایت pastebin.com برای اپلود استفاده کرده و لینک حاصل را در سوال خود قرار دهید. برای قرار دادن تصویر ، از بخش ارسال تصویر ادیتور سایت استفاده کنید.
  • بعد از دریافت پاسخ، بهترین پاسخ را از طریق کلیک بر روی علامت تیک انتخاب کنید
  • اگر با خطا و یا مشکلی مواجه شدید از بخش تماس با ما در انتهای صفحه و یا ایمیل Coderx7@gmail.com موضوع را اطلاع دهید.

با تشکر

دسته بندی ها

0 امتیاز

برای ضرب بردار در تنسور در numpy از تابع :

np.tensordot(a, T, axes = ((1),(1))

استفاده کرده ام. برای مثال اگر a یک بردار 2*1 باشد و T یک تنسور 2*2*3 باشد نتیجه یک ماتریس ۲*۳ هست. برای پیاده سازی این ضرب در Tensorflow چه تابعی با چه محوری باید استفاده شود؟ همچنین چگونه بعد از انجام این ضرب« یک بردار c با ابعاد 3*1 در ابتدای نتیجه ضرب شود تا در نتهایت یک بردار با ابعاد ۲*۱ بدست آید؟ خیلی ممنون

توسط (102 امتیاز)

1 پاسخ

+2 امتیاز
 
بهترین پاسخ

سلام
کتابخونه tensorflow ایده کلیش خیلی شبیه به numpy هست و توابع پایه‌شون تقریبا یه جور عمل می کنن
مثلا برای همین tensordot که گفتید، دقیقا همین تابع توی tensorflow با همین طرز صدا زدن و عملکرد وجود داره و می تونید ازش استفاده کنید

https://www.tensorflow.org/api_docs/python/tf/tensordot

Aliases:

tf.linalg.tensordot

tf.tensordot

tf.tensordot(
    a,
    b,
    axes,
    name=None
)

Defined in tensorflow/python/ops/math_ops.py.

See the guide: Math > Tensor Math Function

Tensor contraction of a and b along specified axes.

Tensordot (also known as tensor contraction) sums the product of
elements from a and b over the indices specified by a_axes and b_axes.
The lists a_axes and b_axes specify those pairs of axes along which to
contract the tensors. The axis a_axes[i] of a must have the same
dimension as axis b_axes[i] of b for all i in range(0, len(a_axes)).
The lists a_axes and b_axes must have identical length and consist of
unique integers that specify valid axes for each of the tensors.

This operation corresponds to numpy.tensordot(a, b, axes).

Example 1: When a and b are matrices (order 2), the case axes = 1 is equivalent to matrix multiplication.

Example 2: When a and b are matrices (order 2), the case axes = [[1], [0]] is equivalent to matrix multiplication.

Example 3:
Suppose that and represent two tensors of order 3. Then, contract(a, b, [[0], [2]]) is the order 4 tensor whose entry corresponding to the indices is given by.

In general, order(c) = order(a) + order(b) - 2*len(axes[0]).

Args:

a: Tensor of type float32 or float64.
b: Tensor with the same type as a.
axes: Either a scalar N, or a list or an int32 Tensor of shape [2, k]. If axes is a scalar, sum over the last N axes of a and the first N

axes of b in order. If axes is a list or Tensor the first and second
row contain the set of unique integers specifying axes along which the
contraction is computed, for a and b, respectively. The number of axes
for a and b must be equal.

name: A name for the operation (optional).

Returns:

A Tensor with the same type as a. Raises:

ValueError: If the shapes of a, b, and axes are incompatible.
IndexError: If the values in axes exceed the rank of the corresponding tensor.
توسط (1.6k امتیاز)
انتخاب شده توسط
خیلی ممنون. بله این تابع درست عمل میکنه. همچنین در لینک زیر هم یک راه حل دیگر ارایه شده.
https://stackoverflow.com/questions/34110502/bilinear-tensor-product-in-tensorflow
...