Saya memiliki dua tensor A dan B yang pertama berukuran (500,10) dan yang kedua berukuran (500). Saya ingin mencari A/B. Saya menggunakan operator/biasa dan kompiler Theano mengatakan bahwa ukurannya harus sama. Kemudian saya mencoba menggunakan tensor.tile di B agar ukurannya sama dengan A. Ini memiliki tiga parameter (x, reps, ndim). Saya mencoba nilai yang berbeda dan saya terbatas pada batasan ini: x.ndim = len(reps) dan ndim = len(reps) Lalu dengan batasan ini bagaimana saya bisa menyusun array ke matriks?! Apakah ini bug di Theano?
Memasang tensor Theano
Jawaban (1)
Anda tinggal menyiarkannya saja, dan ada beberapa cara untuk melakukannya. Ambil contoh berikut
import numpy as np
A = np.arange(1., 5001., 1.).reshape(500, 10)
B = np.arange(1., 501., 1.)
import theano
As = theano.shared(A)
Bs = theano.shared(B)
Cara yang aman untuk melakukan ini adalah menambahkan sumbu yang sesuai
AoverB = A / B[:, np.newaxis]
AoverBalso = A / B.reshape((-1, 1))
AsoverBs = As / Bs.reshape((-1, 1))
Cara lain adalah dengan mengeksploitasi fakta bahwa ada siaran implisit untuk mengisi sumbu pertama jika sumbu tersebut hilang
AoverBT = A.T / B.T # no axis was added here
AsoverBsT = As.T / Bs.T
Untuk menunjukkan bahwa semua perhitungan ini sama, kita menggunakan numpy.testing
from numpy.testing import assert_array_equal
assert_array_equal(AoverB, AoverBalso)
assert_array_equal(AoverB, AsoverBs.eval())
assert_array_equal(AoverB, AoverBT.T)
assert_array_equal(AoverB, AsoverBsT.T.eval())
person
eickenberg
schedule
26.12.2014