[英]theano ~ use an index matrix and embeddings matrix to produce a 3D tensor?
[英]How to broadcast across 3d tensor in theano?
如果我有一個3d張量塊B
並且我想將其某些“面”設置為0(概率為0.5)。 在這里,軸1是行,軸2是列,軸3是“面”。 我努力了
size = (B.shape[1], 1, 1)
noise = self.theano_rng.binomial(size=size, n=1, p=0.5)
return noise * B
但這不起作用,形狀沒有對齊,我得到一個錯誤。
例如,我想
2 2 2 2 2 2
3 3 3 3 3 3
4 4 4 4 4 4
* [1 0] ->
6 6 6 0 0 0
7 7 7 0 0 0
8 8 8 0 0 0
您可以使用dimshuffle
添加啟用廣播所需的尺寸。
這是一個工作示例:
import numpy
import theano
import theano.tensor as tt
x = tt.tensor3()
y = tt.bvector()
z = x * y.dimshuffle(0, 'x', 'x')
f = theano.function([x, y], z)
x_value = numpy.array([[[2, 2, 2], [3, 3, 3], [4, 4, 4]],
[[6, 6, 6], [7, 7, 7], [8, 8, 8]]], dtype=theano.config.floatX)
y_value = numpy.array([1, 0], dtype=numpy.int8)
print f(x_value, y_value)
哪個打印
[[[ 2. 2. 2.]
[ 3. 3. 3.]
[ 4. 4. 4.]]
[[ 0. 0. 0.]
[ 0. 0. 0.]
[ 0. 0. 0.]]]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.