Tôi đã theo bốn tensorsVectorising numpy.einsum
- H (h, r)
- Một (a, r)
- D (d, r)
- T (a, t , r)
Đối với mỗi i
trong a
, có một T[i]
tương ứng của hình (t, r)
.
tôi cần phải làm một np.einsum
để tạo ra kết quả sau (pred
):
pred = np.einsum('hr, ar, dr, tr ->hadt', H, A, D, T[0])
for i in range(a):
pred[:, i:i+1, :, :] = np.einsum('hr, ar, dr, tr ->HADT', H, A[i:i+1], D, T[i])
Tuy nhiên, tôi muốn làm tính toán này mà không cần sử dụng một vòng lặp for. Lý do là tôi đang sử dụng autograd
hiện không hoạt động với các bài tập mục!
Cảm ơn! Tôi bằng cách nào đó (sai) nghĩ rằng nó có thể là một thực tế xấu để có cùng một nhân vật lặp đi lặp lại trong chuỗi einsum. Giống như, chúng ta có hai As trên LHS của '->'. Tôi nghĩ rằng hạn chế này áp dụng cho RHS của '->'? –
@NipunBatra Lặp lại trên LHS cho các biến khác nhau có nghĩa là giữ cho chúng được căn chỉnh. Không cho phép lặp lại một biến số hoặc LHS hoặc RHS vì lý do hiển nhiên. – Divakar
'ii' là dấu vết, 'ii-> i' là đường chéo. 'i, i' và 'i, i-> i' cũng ổn. Lặp lại '-> ii' trong đầu ra là sai. – hpaulj