使用theano / numpy.tensordot的外部产品

时间:2016-02-09 17:00:39

标签: python arrays numpy theano

我有一个长度为n=3的{​​{1}}向量的NumPy数组,所以m=10。我正在尝试使用input.shape = (n,m,1)来计算每个向量的外积,以便theano/numpy.tensordot和:

output.shape = (n,m,m)

我很确定这是可能的,但我很难弄清楚用于轴的参数。这可以很容易地在数组上迭代完成,但我试图使用tensordot完成此步骤,因为它在theano和numpy中实现相同。这很重要,因为我正在使用theano,但目前使用numpy进行调试。

1 个答案:

答案 0 :(得分:3)

你并没有完全使用点积的总和减少部分,而只是使用它的转置版本为每一行广播elementwise multiiplication。通过在两个版本的输入数组中创建singleton维度,可以通过broadcasting再次对所有行以矢量化方式实现此目标 - 一个singleton dim位于axis=1,另一个位于axis=2 version #2。因为,输入数组已经是3D形状,所以我们已经有了output = input*input.swapaxes(1,2) 。要获得第一个版本,只需沿最后两个dims交换轴。因此,将这两个版本相乘可以得到所需的输出,如此 -

<ons-page>

<ons-tabbar>
    <label class="tab-bar__item">
        <input type="radio" name="tab-bar-a" checked="checked">
        <button class="tab-bar__button">
            <i class="tab-bar__icon fa fa-dashboard"></i>
            <div class="tab-bar__label">Dashboard</div>
        </button>
    </label>

    <label class="tab-bar__item" ng-click="myNav.pushPage('views/device-settings.html', {animation : 'slide'})">
        <button class="tab-bar__button">
            <i class="tab-bar__icon fa fa-cogs"></i>
            <div class="tab-bar__label">Settings</div>
        </button>
    </label>
</ons-tabbar>

<ons-toolbar>
    <div class="left">
        <ons-toolbar-button ng-click="menu.toggle()">
            <ons-icon icon="ion-navicon" size="28px" fixed-width="false"></ons-icon>
        </ons-toolbar-button>
    </div>
    <div class="center">Device</div>
</ons-toolbar>

<ons-list id="device">
    <ons-list-item>
        <label class="checkbox">
            <input type="checkbox" checked="checked">
            <div class="checkbox__checkmark"></div>
            Switch 1
        </label>
        <div class="switch-detail">
            <ons-icon icon="fa-calendar"></ons-icon>
            Last enabled: 9 February 2016 on 17:39
        </div>
    </ons-list-item>
    <ons-list-item>
        <label class="checkbox">
            <input type="checkbox" checked="checked">
            <div class="checkbox__checkmark"></div>
            Switch 2
        </label>
        <div class="switch-detail">
            <ons-icon icon="fa-calendar"></ons-icon>
            Last enabled: 9 February 2016 on 17:39
        </div>
    </ons-list-item>
    <ons-list-item>
        <label class="checkbox">
            <input type="checkbox" checked="checked">
            <div class="checkbox__checkmark"></div>
            Switch 3
        </label>
        <div class="switch-detail">
            <ons-icon icon="fa-calendar"></ons-icon>
            Last enabled: 9 February 2016 on 17:39
        </div>
    </ons-list-item>
</ons-list>