MindSpore算子支持类
MindSpore算子支持類
Q:在使用Conv2D進行卷積定義的時候使用到了group的參數,group的值不是只需要保證可以被輸入輸出的維度整除即可了嗎?group參數的傳遞方式是怎樣的呢?
A:Conv2D算子是有這個約束條件的:當group大于1 時,其值必須要與輸入輸出的通道數相等。不要使用ops.Conv2D,這個算子目前不支持group>1。目前MindSpore只有nn.Conv2D接口支持組卷積,但是有group要與輸入輸出的通道數相等的約束。 Conv2D算子的
def init(self,
out_channel,
kernel_size,
mode=1,
pad_mode=“valid”,
pad=0,
stride=1,
dilation=1,
group=1,
data_format=“NCHW”):
函數中帶有group參數,這個參數默認就會被傳到C++層。
Q:Convolution Layers有沒有提供3D卷積?
A:目前MindSpore在Ascend上有支持3D卷積的計劃。可以關注官網的支持列表,等到算子支持后會在表中展示。
Q:MindSpore支持矩陣轉置嗎?
A:支持,請參考mindspore.ops.Transpose的算子教程。
Q:請問MindSpore能算給定任意一個tensor的方差嗎?
A: MindSpore目前暫無可以直接求出tensor方差的算子或接口。不過MindSpore有足夠多的小算子可以支持用戶實現(xiàn)這樣的操作,可以參考class Moments(Cell)來實現(xiàn)。
Q:使用MindSpore-1.0.1版本在圖數據下沉模式加載數據異常,是什么原因?
A:應該是construct中直接使用了帶有axis屬性的算子,比如P.Concat(axis=1)((x1, x2))這種,建議把算子在__init__中初始化:
from mindspore import nn
from mindspore.ops import operations as P
class Net(nn.Cell):
def init(self):
super(Net, self).init()
self.concat = P.Concat(axis=1)
def construct(self, x, y):
out = self.concat((x, y))
return out
Q:nn.Embedding層與PyTorch相比缺少了Padding操作,有其余的算子可以實現(xiàn)嗎?
A:在PyTorch中padding_idx的作用是將embedding矩陣中padding_idx位置的詞向量置為0,并且反向傳播時不會更新padding_idx位置的詞向量。在MindSpore中,可以手動將embedding的padding_idx位置對應的權重初始化為0,并且在訓練時,通過mask的操作,過濾掉padding_idx位置對應的Loss。
Q:Operations中Tile算子執(zhí)行到__infer__時,value值為None,丟失了數值是怎么回事?
A:Tile算子的multiples input必須是一個常量(該值不能直接或間接來自于圖的輸入)。否則,構圖的時候,會拿到一個None的數據,因為圖的輸入是在圖執(zhí)行的時候才傳下去的,構圖的時候拿不到圖的輸入數據。 相關的資料可以看靜態(tài)圖語法支持。
Q:官網的LSTM示例在Ascend上跑不通。
A:目前LSTM只支持在GPU和CPU上運行,暫不支持硬件環(huán)境,可以通過MindSpore算子支持列表查看算子支持情況。
Q:conv2d設置為(3,10),Tensor[2,2,10,10],在ModelArts上利用Ascend跑,報錯:FM_W+pad_left+pad_right-KW>=strideW,CPU下不報錯。
A:這是TBE這個算子的限制,x的width必須大于kernel的width。CPU的這個算子沒有這個限制,所以不報錯。
總結
以上是生活随笔為你收集整理的MindSpore算子支持类的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MindSpore基准性能
- 下一篇: MindSpore网络模型类