فرض کنید یک بردار 1*n
به نام a
و یک تنسور k*n*n
به نام T
داریم و هدف بدست آوردن یک ماتریس هست که از ضرب هر اسلایس از تنسور T
در a
بدست می آید. یعنی در این مثال تنسور ما دارای k
ماتریس n*n
هست و خروجی باید k ماتریس 1*n
باشد. که من از روش زیر برای این پیاده سازی استفاده کردم:
T = tf.Variable(tf.random_normal((k,n,n),mean=0.0,stddev=0.001),name="tensor")
a = tf.Variable(tf.random_normal((n,1)),name="vector")
t = tf.reshape(T, (k*n,n)).eval()
output = (tf.matmul(t,a))
y = tf.reshape(output,(k,n))
output = tf.transpose(output)
دلیل اعمال ترانهاده در ماتریس خروجی این هست که در انتها میخواهیم نتیجه ضرب بردار در هر اسلایس از تنسور به صورت یک ستون از ماتریس خروجی قرار بگیرد.
سوال من این هست که آیا تابع از پیش نوشته شده یا روش بهینه تری در تنسورفلو برای این محاسبه وجود دارد؟
برای اطلاعات بیشتر در مورد ضرب تنسور در بردار میتوانید به این مقاله مراجعه کنید.
خیلی ممنون