CNTK程式庫受控 API 是以 C# 實作,而且可由 C# 和其他 .NET 語言取用。 使用 CNTK 程式庫受控 API和搭配C# 使用 CNTK頁面會顯示如何在應用程式中使用此 API。 下列各節說明 CNTK 程式庫 Managed Eval API 的類別和方法。
類別 CNTKLib
這是靜態類別,其中包含許多作業、初始化和許多其他方法。
public static Function Negate(Variable operand, string name = "");
使用指定的輸入運算元,建立CNTK內建專案否定運算的實例。 參數:
-
operand:輸入變數。 它可以是另一個函式的 ouput。 -
name:作業的名稱。
public static Function Sigmoid(Variable operand, string name = "")
Sigmoid 作業。 它會接受輸入變數,並將 Sigmoid 作業套用至該變數。
參數:
-
operand:輸入變數。 它可以是另一個函式的 ouput。 -
name:作業的名稱。
public static Function Tanh(Variable operand, string name)
Tanh 啟用。 它會接受輸入變數,並將 Tanh 作業套用至該變數。
參數:
-
operand:輸入變數。 它可以是另一個函式的 ouput。 -
name:作業的名稱。
public static Function Asin(Variable operand, string name = "");
使用指定的輸入運算元,建立內建元素CNTK實例, asin 運算。
參數:
-
operand:輸入變數。 它可以是另一個函式的 ouput。 -
name:作業的名稱。
public static Function Sin(Variable operand, string name = "");
使用指定的輸入運算元,建立內建元素正弦運算的CNTK實例。 參數:
-
operand:輸入變數。 它可以是另一個函式的 ouput。 -
name:作業的名稱。
public static Function Acos(Variable operand, string name = "");
使用指定的輸入運算元,建立CNTK內建專案 acos 運算的實例。
-
operand:輸入變數。 它可以是另一個函式的 ouput。 -
name:作業的名稱。
public static Function Cos(Variable operand, string name = "");
使用指定的輸入運算元建立內建元素余弦運算的實例CNTK。
-
operand:輸入變數。 它可以是另一個函式的 ouput。 -
name:作業的名稱。
public static Function Cosh(Variable operand, string name = "");
使用指定的輸入運算元,建立CNTK內建專案 cosh 運算的實例。
-
operand:輸入變數。 它可以是另一個函式的 ouput。 -
name:作業的名稱。
public static Function Sinh(Variable operand, string name = "");
使用指定的輸入運算元,建立CNTK內建元素 sinh 運算的實例。
-
operand:輸入變數。 它可以是另一個函式的 ouput。 -
name:作業的名稱。
public static Function ReLU(Variable operand, string name = "")
修正線性啟用。 它會接受輸入變數,並將修正線性啟用作業套用至該變數。
-
operand:輸入變數。 它可以是另一個函式的 ouput。 -
name:作業的名稱。
public static Function Exp(Variable operand, string name = "");
使用指定的輸入運算元,建立內建元素 exp 運算CNTK實例。
-
operand:輸入變數。 它可以是另一個函式的 ouput。 -
name:作業的名稱。
public static Function Log(Variable operand, string name = "");
使用指定的輸入運算元,建立CNTK內建專案記錄作業的實例。
-
operand:輸入變數。 它可以是另一個函式的 ouput。 -
name:作業的名稱。
public static Function Square(Variable operand, string name = "");
使用指定的輸入運算元,建立內建元素平方運算CNTK實例。
-
operand:輸入變數。 它可以是另一個函式的 ouput。 -
name:作業的名稱。
public static Function Sqrt(Variable operand, string name = "");
使用指定的輸入運算元,建立CNTK內建的平方根運算實例。
-
operand:輸入變數。 它可以是另一個函式的 ouput。 -
name:作業的名稱。
public static Function Softmax(Variable operand, Axis axis, string name = "")
在指定的張量輸入運算元參數上,在指定的座標軸上,建立內建 softmax 運算 CNTK的實例:
-
operand:作業的輸入變數。 它可以是另一個函式的 ouput。 -
axis:要套用 softmax 作業的軸 -
name:作業的名稱。
public static Function Hardmax(Variable operand, string name = "");
在指定的張量輸入運算元上建立內建 hardmax 作業的實例CNTK
-
operand:輸入變數。 它可以是另一個函式的 ouput。 -
name:作業的名稱。
public static Function Transpose(Variable operand, string name = "");
在指定的 1D 或 2D 輸入運算元上建立CNTK內建轉置作業的實例
-
operand:輸入變數。 它可以是另一個函式的 ouput。 -
name:作業的名稱。
public static Function Dropout(Variable operand, dropoutRate, uint seed, string name = "");
在指定的張量輸入運算元上建立卸載作業的實例
-
operand:輸入變數。 它可以是另一個函式的 ouput。 -
dropoutRate: -
seed: -
name:作業的名稱。
public static Function Reshape(Variable operand, NDShape replacementShape, Axis beginAxis, Axis endAxis, string name = "");
在指定的張量輸入運算元上建立重新調整作業的實例
public static Function Times(Variable leftOperand, Variable rightOperand, string name = "");
使用指定的輸入運算元,建立內建 tensor 乘法運算的CNTK實例。
public static Function TransposeTimes(Variable leftOperand, Variable rightOperand, uint outputRank, string name = "");
使用左輸入運算元和指定右運算元的轉置,建立 CNTK內建矩陣乘法運算的實例。 只接受排名 1 或 2 的左運算元。
public static Function Plus(Variable leftOperand, Variable rightOperand, string name = "")
二元元素的張量加法運算。 參數:
-
leftOperand:加號運算的左變數。 它可以是另一個函式的 ouput。 -
rightOperand:加號運算的左變數。 它可以是另一個函式的 ouput。 -
name:作業的名稱。
public static Function Minus(Variable leftOperand, Variable rightOperand, string name = "");
使用指定的輸入運算元,建立內建元素的CNTK張量減法運算的實例。
public static Function LogAddExp(Variable leftOperand, Variable rightOperand, string name = "");
建立內建元素式 tensor 運算 CNTK的實例,以計算指定之輸入運算元之指數總和的記錄。
public static Function Pow(Variable leftOperand, Variable rightOperand, string name = "");
建立CNTK內建元素式 tensor 運算的實例,以計算 leftOperand 引發至右運算元的乘冪。
public static Function ElementTimes(Variable leftOperand, Variable rightOperand, string name = "");
在指定的 tensor 輸入運算元上建立CNTK內建元素乘法運算的實例。
public static Function ElementDivide(Variable leftOperand, Variable rightOperand, string name = "");
在指定的 tensor 輸入運算元上,建立CNTK內建元素除法運算的實例。
public static Function CosineDistance(Variable leftOperand, Variable rightOperand, string name = "");
建立CNTK內建作業的實例,以計算指定之輸入運算元的余弦距離。
public static Function CosineDistanceWithNegativeSamples(Variable leftOperand, Variable rightOperand, uint shiftWindow, uint numberOfNegativeSamples, string name = "");
建立CNTK內建作業的實例,以計算具有指定輸入運算元之負樣本的余弦距離。
public static Function BinaryCrossEntropy(Variable prediction, Variable targets, string name = "");
建立CNTK內建作業的實例,以計算指定之輸入運算元的二進位交叉 entropy。
public static Function WeightedBinaryCrossEntropy(Variable prediction, Variable targets, Variable weights, string name = "");
建立CNTK內建作業的實例,以計算指定之輸入運算元的加權二進位交叉 entropy。
public static Function CrossEntropyWithSoftmax(Variable prediction, Variable labels, Axis axis, string name = "");
建立CNTK內建作業的實例,以針對指定的輸入運算元使用 softmax 計算交叉 entropy。
public static Function ClassificationError(Variable prediction, Variable labels, uint topN, Axis axis, string name = "");
建立CNTK內建作業的實例,以計算指定運算元的分類預測錯誤。
public static Function PastValue(Variable operand, Variable initialState, uint offset = 1, string name = "");
建立CNTK內建作業的實例,以沿著指定運算元的單一動態軸取得過去值。
public static Function FutureValue(Variable operand, Variable initialState, uint offset = 1, string name = "");
建立CNTK內建作業的實例,以沿著指定運算元的單一動態軸取得未來的值。
public static Function Convolution(Variable convolutionMap,
Variable operand,
NDShape strides = { 1 },
BoolVector sharing = { true },
BoolVector autoPadding = { true },
NDShape dilation = { 1 },
uint reductionRank = 1,
uint maxTempMemSizeInSamples = 0,
string name = "");
迴旋
public static Function ROIPooling(Variable operand,
Variable rois,
PoolingType poolingType,
NDShape roiOutputShape,
double spatialScale,
string name= "");
在具有指定輸出圖形的指定張量輸入運算元上,建立CNTK內建 ROI 共用作業的實例
public static Function Pooling(Variable operand,
PoolingType poolingType,
NDShape poolingWindowShape,
NDShape strides = {1},
BoolVector autoPadding = {false},
const bool ceilOutDim = false,
const bool includePad = false,
string name = "");
public static Function BatchNormalization(Variable operand,
Variable scale,
Variable bias,
Variable runningMean,
Variable runningInvStd,
Variable runningCount,
bool spatial,
double normalizationTimeConstant = 0,
double blendTimeConstant = 0,
double epsilon = 0.00001,
bool useCuDNNEngine = true,
string name = "");
public static Function Splice(VariableVector operands, Axis axis, string name = "");
建立CNTK內建接合作業的實例,將所有指定的 tensor 運算元結合成單一輸出張量
public static Function Combine(VariableVector operands, string name = "");
建立新的 Function 實例,它只會結合指定之 'operands' 函式清單的輸出,讓新 'Function' 的 'Outputs' 是每個指定 'operands' 函式的 'Outputs' 聯集。 例如,建立分類模型時,通常 CrossEntropy loss Function 和 ClassificationError 函式會組成計算圖形的兩個根目錄,這些根目錄可以「結合」來建立具有 2 個輸出的單一函式;即。 CrossEntropy loss 和 ClassificationError 輸出。
public static Function LeakyReLU(Variable operand, string name = "");
使用指定的輸入運算元,建立 CNTK內建元素外泄線性整流器運算的實例。
類別學習模組
class 函式
表示 Function 具有零個或多個輸入引數和一或多個輸出的符號計算。 函式可以是基本或複合 (,由其他函式實例所組成,其輸入和輸出會一起連線) 。 函式實際上是由其他基本函式所組成的計算圖形, (將計算) 表示為節點和 Variable 物件, (將資料) 表示為圖形的邊緣和分葉。
類別 Function 包含下列與評估相關的屬性和方法:
public string Name { get; }
函式的名稱。
public IList<Variable> Arguments { get; }
不是參數或常數類型之函式的所有輸入變數清單。 這些變數是必要輸入,才能計算函式的輸出。
public Variable Output { get; }
函式的單一輸出變數,如果只有一個。 否則會在存取時引發執行時間例外狀況。
public IList<Variable> Outputs { get; }
函式的所有輸出變數清單。
public Function RootFunction { get; }
傳回函式基礎之函式之圖形根目錄的基本函式。 如果函式本身是基本函式,則 (this-RootFunction > () == 這個) 。
public string OpName { get; }
函式所代表的作業名稱。
public bool IsComposite { get; }
布林值,指出函式是否為複合函數。
public bool IsPrimitive { get; }
布林值,指出函式是否為基本函式。
public bool IsBlock { get; }
布林值,指出 Function 是否為區塊函式。
public void Evaluate(IDictionary<Variable, Value> inputs, IDictionary<Variable, Value> outputs, DeviceDescriptor computeDevice)
public void Evaluate(IDictionary<Variable, Value> inputs, IDictionary<Variable, Value> outputs, bool createPersistentOutputValues, DeviceDescriptor computeDevice)
使用指定的輸入評估函式。 它會根據字典中指定的每個輸入變數所提供的 值 來計算函式的 inputs 輸出。 輸出會儲存在對應至字典中輸出變數的 outputs 輸出值中。
參數:
-
inputs:函式的輸入變數及其值。 -
outputs:每個輸出變數的輸出值。 呼叫端可以指定 Value 物件來儲存輸出或傳入null,在此情況下,方法會配置輸出結果的儲存體。 在這兩種情況下,當傳回 Value 物件時,都會包含函式對應輸出的結果。 如果指定null了 Value,而且參數createPersistentOutputValues未指定或設定為false,則 方法傳回的 Value 物件是暫時的,而且只有在下一個轉送/回溯呼叫之前,才保證有效。 如果需要稍後存取,您應該指定 給true,或明確DeepClone指定createPersistentOutputValues暫存的 Value 物件。 -
computeDevice:執行計算的裝置。 它應該與載入模型所在的裝置對齊。 -
createPersistentOutputValues:只有在輸出中指定 Value 時才相關null。 如果設定為true,則方法會建立持續性 Value 物件,否則 Value 物件是暫時的,而且只有在下一次向前/回溯呼叫之前才有效。
public Function Clone(ParameterCloningMethod parameterCloneMethod = ParameterCloningMethod.Share)
Clones 函式 this 。
參數:
-
parameterCloneMethod:指定如何複製 Function 的參數:ParameterCloningMethod.Share- 參數會在複製的 Function 與新的複製之間共用。 如果複製的函式用於並行評估,則應該使用此值。ParameterCloningMethod.Clone- 建立新的可學習參數,並使用所複製函式之對應參數的目前值進行初始化。ParameterCloningMethod.Freeze- 參數會複製並變成不可變;亦即,新複製 (中的常數,例如用來作為固定功能擷取器) 。 ParameterCloningMethod 定義 在這裡。
public Function FindByName(string name, bool nestedSearchInsideBlockFunction)
在函式圖形中尋找具有函式基礎之指定名稱的函式。 如果有多個具有相同名稱的函式存在,則會擲回例外狀況。 如果 nestedSearchInsideBlockFunction 為 true,則也會在區塊函式內搜尋所有函式。
參數:
-
name:要搜尋的名稱。 -
nestedSearchInsideBlockFunction:如果為 true,也會檢查區塊函式內的所有函式。
public IList<Function> FindAllWithName(string name, bool nestedSearchInsideBlockFunction = false)
在函式圖形中,尋找具有函式基礎之指定名稱的函式清單。 如果 nestedSearchInsideBlockFunction 為 true,則也會在區塊函式內搜尋所有函式。
參數:
-
name:要搜尋的名稱。 -
nestedSearchInsideBlockFunction:如果為 true,也會檢查區塊函式內的所有函式。
public static Function Load(string modelFile, DeviceDescriptor computeDevice)
從模型檔案載入函式。
參數:
-
modelFile:模型檔案的路徑。 -
computeDevice:載入函式的裝置。
public static Function Load(byte[] modelBuffer, DeviceDescriptor computeDevice)
從代表模型的記憶體緩衝區載入函式。
參數:
-
modelBuffer:位元組陣列包含序列化模型內容。 -
computeDevice:載入函式的裝置。
public static Function Combine(IEnumerable<Variable> operands)
建立新的函式實例,結合函式的指定 'operands' 清單的輸出。 新 'Function' 的 'Outputs' 是每個指定 'operands' 函式之 'Outputs' 的聯集。 例如,建立分類模型時,CrossEntropy loss Function 和 ClassificationError 函式通常構成計算圖形的根目錄,其可「結合」來建立具有 2 個輸出的單一函式;即。 CrossEntropy loss 和 ClassificationError 輸出。
參數:
-
operands:應該包含在新函式輸出中的函式或變數清單。
public static Function AsComposite(Function rootFunction, string name = "")
建立具有指定 rootFunction 做為其根目錄的複合函式。 複合表示較高層級的函式,其封裝了指定 rootFunction 基礎之 Functions 的整個圖形。
參數:
-
rootFunction:要建立之複合函式的根。 -
name:要建立之複合函式的名稱。
public static Function Alias(Variable operand, string name = "")
建立新的 Function 實例,這只是指定運算元的別名。
參數:
-
operand:建立別名函式的函式或變數。 -
name:要建立的新函式名稱。
類別值
Value是具有選擇性遮罩的多維度陣列,而且是實際送入或從計算產生的資料。
下列方法會使用具有指定之張量圖形的密集輸入來建立 Value 物件。
public static Value CreateBatch<T>(NDShape sampleShape, IEnumerable<T> batch, DeviceDescriptor device, bool readOnly = false)
建立新的 Value 物件,其中包含一批範例。 批次中的樣本數目是除以 (執行時間錯誤的大小 shape 除以元素數目 batch ,如果其餘部分不是零) ,就會發生執行時間錯誤。 建立的 Value 物件包含 中 batch 指定資料的複本。
參數:
-
sampleShape:Value 物件的張量圖形。 -
batch:要包含在 Value 物件中的資料。 -
device:應該在其中建立 Value 物件的裝置。 -
readOnly:如果這個旗標為 ,則 Value 物件是true唯讀的。
public static Value CreateSequence<T>(NDShape sampleShape, IEnumerable<T> sequence, DeviceDescriptor device, bool readOnly = false)
建立包含範例序列的新 Value 物件。 建立的 Value 物件包含 中 sequence 指定資料的複本。 序列長度是除 sequence 以 (執行時間錯誤大小 shape 除以的專案數目,如果餘數不是零) ,就會發生執行階段錯誤。 建立的序列是新的序列。
參數:
-
sampleShape:Value 的張量圖形。 -
sequence:要包含在 Value 中的資料。 -
device:應該在其中建立 Value 物件的裝置。 -
readOnly:如果這個旗標是true,則值為唯讀。
public static Value CreateSequence<T>(NDShape sampleShape, IEnumerable<T> sequence, bool sequenceStartFlag, DeviceDescriptor device, bool readOnly = false)
建立包含範例序列的新 Value 物件。 建立的 Value 物件包含指定 sequence 資料的複本。 sequenceStartFlag 會指定這個序列是先前呼叫這個方法之前一個序列的新序列或接續。 序列長度是除 sequence 以 (執行時間錯誤大小 shape 除以的專案數目,如果餘數不是零) ,就會發生執行階段錯誤。
參數:
-
sampleShape:Value 的張量圖形。 -
sequence:要包含在 Value 中的資料。 -
sequenceStartFlag:true表示它是新的序列。false表示先前序列的接續。 -
device:應該在其中建立 Value 物件的裝置。 -
readOnly:如果這個旗標是true,則值為唯讀。
public static Value CreateBatchOfSequences<T>(NDShape sampleShape, IEnumerable<IEnumerable<T>> batchOfSequences, DeviceDescriptor device, bool readOnly = false)
建立新的 Value 物件,其中包含可變長度序列的批次。 建立的 Value 物件包含 中 batchOfSequences 指定資料的複本。 批次中的序列數目是 的大小 batchOfSequences 。 每個序列的長度是對應序列 batchOfSequences 中的元素數目除以 shape (如果餘數不是零) ,就會發生執行階段錯誤。 中的每個 batchOfSequences 序列都是新的序列。
參數:
-
sampleShape:Value 的張量圖形。 -
batchOfSequences:要儲存在 Value 中的資料。 外部IEnumerable代表具有可變長度的序列集合,而內部IEnumerable則代表每個個別序列。 -
device:應該在其中建立 [值] 的裝置。 -
readOnly:如果這個旗標是true,則值為唯讀。
public static Value CreateBatchOfSequences<T>(NDShape sampleShape, IEnumerable<IEnumerable<T>> batchOfSequences, IEnumerable<bool> sequenceStartFlags, DeviceDescriptor device, bool readOnly = false)
建立新的 Value 物件,其中包含可變長度序列的批次。 建立的 Value 物件包含 中 batchOfSequences 指定資料的複本。 批次中的序列數目是 的大小 batchOfSequences 。 每個序列的長度是對應序列 batchOfSequences 中的元素數目除以 shape (如果餘數不是零) ,就會發生執行階段錯誤。
參數:
-
sampleShape:Value 的張量圖形。 -
batchOfSequences:要儲存在 Value 中的資料。 外部IEnumerable代表具有可變長度的序列集合,而內部IEnumerable則代表每個個別序列。 -
sequenceStartFlags:布林值的集合。 每個元素都代表 中的batchOfSequences對應序列是否為新的序列 (,以防true發生) 或先前序列的接續 (發生false) 。 -
device:應該在其中建立 [值] 的裝置。 -
readOnly:如果這個旗標是true,則值為唯讀。
下列方法會使用單熱向量輸入來建立 Value 物件。
public static Value CreateBatch<T>(int dimension, IEnumerable<int> batch, DeviceDescriptor device, bool readOnly = false)
建立新的 Value 物件,其中包含一批範例。 每個範例都是以索引值表示,指向元素一熱向量 dimension 中的非零值。 批次中的樣本數目是 中的 batch 專案數目。
參數:
-
T:所建立 Value 物件的資料類型。float目前支援 和double。 -
dimension:一熱向量維度的大小。 -
batch:代表範例批次的索引集合。 -
device:應該在其中建立 Value 物件的裝置。 -
readOnly:如果這個旗標是true,則值為唯讀。
public static Value CreateSequence<T>(int dimension, IEnumerable<int> sequence, DeviceDescriptor device, bool readOnly = false)
建立包含範例序列的新 Value 物件。 每個範例都是以索引值表示,指向元素一熱向量 dimension 中的非零值。 序列長度是 中的 sequence 專案數目。 建立的序列是新的序列。
參數:
-
T:所建立 Value 物件的資料類型。float目前支援 和double。 -
dimension:一熱向量維度的大小。 -
sequence:代表樣本序列的索引集合。 -
device:應該在其中建立 Value 物件的裝置。 -
readOnly:如果這個旗標是true,則值為唯讀。
public static Value CreateSequence<T>(int dimension, IEnumerable<int> sequence, bool sequenceStartFlag, DeviceDescriptor device, bool readOnly = false)
建立包含範例序列的新 Value 物件。 每個範例都是以索引值表示,指向元素一熱向量 dimension 中的非零值。 sequenceStartFlag 會指定這個序列是先前呼叫這個方法之前一個序列的新序列或接續。 序列長度是 中的 sequence 專案數目。
參數:
-
T:所建立 Value 物件的資料類型。float目前支援 和double。 -
dimension:一熱向量維度的大小。 -
sequence:代表樣本序列的索引集合。 -
sequenceStartFlag:true表示它是新的序列。false表示先前序列的接續。 -
device:應該在其中建立 Value 物件的裝置。 -
readOnly:如果這個旗標是true,則值為唯讀。
public static Value CreateBatchOfSequences<T>(int dimension, IEnumerable<IEnumerable<int>> batchOfSequences, DeviceDescriptor device, bool readOnly = false)
建立新的 Value 物件,其中包含可變長度序列的批次。 每個範例都是以索引值表示,指向元素一熱向量 dimension 中的非零值。 序列數目是 外部集合 batchOfSequences 中的專案數目。 每個序列的長度是 集合清單中 batchOfSequences 對應序列的專案數。 中的每個 batchOfSequences 序列都是新的序列。
參數:
-
T:所建立 Value 物件的資料類型。float目前支援 和double。 -
dimension:一熱向量維度的大小。 -
batchOfSequences:代表範例序列的索引集合。 外部IEnumerable代表具有可變長度的序列集合,而內部IEnumerable則代表每個個別序列。 -
device:應該在其中建立 Value 物件的裝置。 -
readOnly:如果這個旗標是true,則值為唯讀。
public static Value CreateBatchOfSequences<T>(int dimension, IEnumerable<IEnumerable<int>> batchOfSequences, IEnumerable<bool> sequenceStartFlags, DeviceDescriptor device, bool readOnly = false)
建立新的 Value 物件,其中包含可變長度序列的批次。 每個範例都是以索引值表示,指向元素一熱向量 dimension 中的非零值。 序列數目是 外部集合 batchOfSequences 中的專案數目。 每個序列的長度是 內部集合 batchOfSequences 中對應序列的專案數。
參數:
-
T:所建立 Value 物件的資料類型。float目前支援 和double。 -
dimension:一個熱向量的大小。 -
batchOfSequences:代表範例序列的索引集合。 外部IEnumerable代表具有可變長度的序列集合,而內部IEnumerable則代表每個個別序列。 -
sequenceStartFlags:布林值的集合。 每個元素都代表 中的batchOfSequences對應序列是否為新的序列 (,以防true發生) 或先前序列 (的接續,以防false發生) 。 -
device:應該建立 Value 物件的裝置。 -
readOnly:如果這個旗標為true,則值為唯讀。
下列方法會使用疏鬆輸入建立 Value 物件。
目前支援壓縮疏鬆資料行格式 (CSC) 。 CSC 格式會以資料行主要格式儲存矩陣,並壓縮包含資料行索引的陣列。 CSC 格式的矩陣是以下列參數表示:
-
nonZeroValues:以資料行主要格式保存矩陣所有非零值的資料陣列。 -
rowIndices:陣列,其中包含陣列nonZeroValues中對應元素的資料列索引。 -
colStarts:將索引保存至陣列和nonZeroValues的陣列rowIndices。
如需 CSC 格式的詳細描述,請參閱 這裡。
public static Value CreateSequence<T>(NDShape sampleShape, int sequenceLength, int[] colStarts, int[] rowIndices, T[] nonZeroValues, DeviceDescriptor device, bool readOnly = false)
使用 CSC 疏鬆輸入格式,建立包含範例序列的新 Value 物件。 序列長度是疏鬆矩陣的資料列數目。 建立的序列是新的序列。
參數:
-
T:所建立 Value 物件的資料類型。float目前支援 和double。 -
sampleShape:Value 的張量圖形。 針對疏鬆輸入,張量圖形前置維度必須與張量圖形的大小總計相同。 -
sequenceLength:序列長度,也是疏鬆矩陣中的資料列數目。 -
colStarts:陣列會將每個資料行的索引保存至陣列rowIndices和nonZeroValues。 -
rowIndices:陣列,其中包含陣列nonZeroValues中對應元素的資料列索引。 -
nonZeroValues:保存疏鬆矩陣中所有非零值的陣列。 -
device:應該建立 Value 物件的裝置。 -
readOnly:如果這個旗標為true,則值為唯讀。
public static Value CreateSequence<T>(NDShape sampleShape, int sequenceLength, int[] colStarts, int[] rowIndices, T[] nonZeroValues, bool sequenceStartFlag, DeviceDescriptor device, bool readOnly = false)
使用 CSC 疏鬆輸入格式,建立包含範例序列的新 Value 物件。 序列長度是疏鬆矩陣的資料列數目。 sequenceStartFlag 會指定這個序列是先前呼叫這個方法之前一個序列的新序列或接續。
參數:
-
T:所建立 Value 物件的資料類型。float目前支援 和double。 -
sampleShape:Value 的張量圖形。 針對疏鬆輸入,張量圖形前置維度必須與張量圖形的大小總計相同。 -
sequenceLength:序列長度,也是疏鬆矩陣中的資料列數目。 -
colStarts:陣列會將每個資料行的索引保存至陣列rowIndices和nonZeroValues。 -
rowIndices:陣列,其中包含陣列nonZeroValues中對應元素的資料列索引。 -
nonZeroValues:保存疏鬆矩陣中所有非零值的陣列。 -
sequenceStartFlag:true表示它是新的序列。false表示先前序列的接續。 -
device:應該建立 Value 物件的裝置。 -
readOnly:如果這個旗標為true,則值為唯讀。
public static Value CreateSequence<T>(int dimension, int sequenceLength, int[] colStarts, int[] rowIndices, T[] nonZeroValues, DeviceDescriptor device, bool readOnly = false)
使用 CSC 疏鬆輸入格式,建立包含範例序列的新 Value 物件。 序列長度是疏鬆矩陣的資料列數目。 建立的序列是新的序列。
參數:
-
T:所建立 Value 物件的資料類型。float目前支援 和double。 -
dimension:疏鬆矩陣中的資料行數目。 -
sequenceLength:序列長度,也是疏鬆矩陣中的資料列數目。 -
colStarts:陣列會將每個資料行的索引保存至陣列rowIndices和nonZeroValues。 -
rowIndices:陣列,其中包含陣列nonZeroValues中對應元素的資料列索引。 -
nonZeroValues:保存疏鬆矩陣中所有非零值的陣列。 -
device:應該建立 Value 物件的裝置。 -
readOnly:如果這個旗標為true,則值為唯讀。
public static Value CreateSequence<T>(int dimension, int sequenceLength, int[] colStarts, int[] rowIndices, T[] nonZeroValues, bool sequenceStartFlag, DeviceDescriptor device, bool readOnly = false)
使用 CSC 疏鬆輸入格式,建立包含範例序列的新 Value 物件。 序列長度是疏鬆矩陣的資料列數目。 sequenceStartFlag 會指定此序列是否為新序列或先前序列的接續。
參數:
-
T:所建立 Value 物件的資料類型。float目前支援 和double。 -
dimension:疏鬆矩陣中的資料行數目。 -
sequenceLength:序列長度,也是疏鬆矩陣中的資料列數目。 -
colStarts:陣列會將每個資料行的索引保存至陣列rowIndices和nonZeroValues。 -
rowIndices:陣列,其中包含陣列nonZeroValues中對應元素的資料列索引。 -
nonZeroValues:保存疏鬆矩陣中所有非零值的陣列。 -
sequenceStartFlag:true表示它是新的序列。false表示先前序列的接續。 -
device:應該建立 Value 物件的裝置。 -
readOnly:如果這個旗標為true,則值為唯讀。
下列方法會從 NDArrayView 建立 Value 物件。
public static Value Create(NDShape sampleShape, IEnumerable<NDArrayView> sequences, DeviceDescriptor device, bool readOnly = false)
根據 NDArrayViews 集合建立新的 Value 物件。 中的每個 sequences 序列都是新的序列。
參數:
-
sampleShape:正在建立之 Value 的張量圖形。 -
sequences:以 NDArrayView 表示的序列集合。 每個 NDArrayView 都代表序列。 -
device:應該建立 Value 物件的裝置。 -
readOnly:如果這個旗標為true,則值為唯讀。
public static Value Create(NDShape sampleShape, IEnumerable<NDArrayView> sequences, IEnumerable<bool> sequenceStartFlags, DeviceDescriptor device, bool readOnly = false)
根據 NDArrayViews 集合建立新的 Value 物件。 sequenceStartFlags 會指定序列是否為新序列或先前序列的接續。
參數:
-
sampleShape:正在建立之 Value 的張量圖形。 -
sequences:以 NDArrayView 表示的序列集合。 每個 NDArrayView 都代表序列。 -
sequenceStartFlags:布林值的集合。 每個元素都代表 中的sequences對應序列是否為新的序列 (,以防true發生) 或先前序列 (的接續,以防false發生) 。 -
device:應該建立 Value 物件的裝置。 -
readOnly:如果這個旗標為true,則值為唯讀。
Value 物件包含下列屬性和方法。
public Value(NDArrayView data)
建構不含遮罩的多維度值。
public Value(NDArrayView data, NDMask mask)
使用相關聯的遮罩建構多維度值。
public DataType DataType { get; }
Value 物件中包含的資料資料類型。
public DeviceDescriptor Device { get; }
Value 所在的裝置描述項。
public NDShape Shape { get; }
Value 的形狀。
public StroageFormat StorageFormat { get; }
Value 的儲存格式。
public bool IsSparse { get; }
布林值,指出 Value 是否包含疏鬆儲存格式的資料。
public bool IsReadOnly { get; }
布林值,指出 Value 是否為唯讀。
public int maskedCount { get; }
Value 中遮罩/不正確值數目。
public void CopyFrom(Value Source)
將 的內容 source 複製到 Value。
Source的資料和遮罩圖形必須與 Value 的資料和遮罩相同 this 。
參數:
-
Source:複製 Value 的來源物件。
public Value DeepClone()
在與 Value 相同的裝置 this 上建立具有新配置儲存體的新 Value,並將 Value 的內容複寫到 this 新配置的 Value。
public Value DeepClone(bool readOnly)
在與 Value 相同的裝置 this 上建立具有新配置儲存體的新 Value,並將 Value 的內容複寫到 this 新配置的 Value。
參數:
-
readOnly:如果這個旗標為 ,則新的 Value 物件是true唯讀的。
public Value Alias(bool readOnly)
建立新的 Value,這是 Value 的 this 別名。
參數:
-
readOnly:如果這個旗標為 ,則新的 Value 物件是true唯讀的。
public IList<IList<T>> GetDenseData<T>(Variable outputVariable)
取得儲存在 Value 物件中的資料,做為具有密集格式之可變長度的序列清單。 這個方法會傳回 IList IList <> 。 外部清單的每個元素都代表序列。 IList 所代表的每個序列都包含一個可變數目的樣本。 每個範例都包含類型為 'T' 的固定專案數目。 元素數目取決於 outputVariable 的形狀。 樣本數目是 IList 中的元素計數除以樣本的元素計數。
參數:
-
outputVariable:Value 所代表的變數。 變數的形狀應該符合 Value 的形狀。
public IList<IList<int>> GetOneHotData(Variable outputVariable)
取得儲存在 Value 物件中的資料,做為具有一個熱向量格式之可變長度的序列清單。 這個方法會傳回 IList IList <> 。 外部清單的每個元素都代表序列。 IList 所代表的每個序列都包含一個可變數目的樣本。 每個範例都會以一個熱向量的索引來表示。 樣本數目是 IList 中的元素計數。
參數:
-
outputVariable:Value 所代表的變數。 一熱向量的大小應該符合變數中所定義的 。
public void GetSparseData<T>(Variable outputVariable, out int sequenceLength, out IList<int> colStarts, out IList<int> rowIndices, out IList<T> nonZeroValues, out int numNonZeroValues)
將儲存在 Value 物件中的資料複製到代表 CSC 疏鬆格式序列的緩衝區。 視需要調整順序緩衝區的大小。 Value 應該具有與 outputVariable 相同的張量圖形。 傳回時, sequenceLength 會設定為儲存在 Value 中的序列長度, colStartsrowIndices 而且 nonZeroValues 包含資料行開始索引、資料列索引和非零值的資料,而且 numNonZeroValues 設定為 Value 中包含的 this 非零值數目。
參數:
-
outputVariable:從此值將資料複製到緩衝區時,表示圖形和動態座標軸。 -
sequenceLength:傳回時,它會設定為儲存在 Value 中的序列長度。 -
colStarts:傳回時,它會包含索引到nonZeorValues矩陣中每個資料行之第一個非零元素的 。 -
rowIndices:傳回時,它會包含矩陣中每個非零元素的資料列索引。 -
nonZeroValues:傳回時,它會包含矩陣所有非零元素的值。 -
numNonZeroValues:在傳回時,它會傳回矩陣的非零元素數目。
下列方法即將淘汰。 請使用上述的 GetDenseData () 和 GetOneHotData () 。
public void CopyVariableValueTo<T>(Variable outputVariable, List<List<T>> sequences)
將儲存在 Value 中的資料複製到 所提供的 sequences 緩衝區。
sequences是具有可變長度的序列清單。 外部清單中 sequences 所包含的專案數目是 Value 中的序列數目。 外部清單的每個元素都代表序列。 由 表示 List<T> 的每個序列都包含一個可變數目的樣本。 每個範例都包含類型為 T 的固定數目專案。 樣本的元素數目取決於 的 outputVariable 圖形。 變數的形狀應該符合 Value 的形狀。
參數:
-
outputVariable:在將資料從 Valuesequences複製到 時,表示圖形和動態座標軸。 -
sequences:用來儲存從 Value 複製資料的輸出緩衝區。
public void CopyVariableValueTo(Variable outputVariable, List<List<uint>> sequences
將儲存在 Value 物件中的資料複製到 所提供的 sequences 緩衝區。
sequences是具有可變長度的序列清單。 外部清單中 sequences 所包含的專案數目是 Value 中的序列數目。 外部清單的每個元素都代表序列。 由 表示 List<uint> 的每個序列都包含一個可變數目的樣本。 每個樣本都會以指向一個熱向量中非零值的索引來表示。 一熱向量的維度大小應該符合 中所 outputVariable 定義的 。
參數:
-
outputVariable:在將資料從 Valuesequences複製到 時,表示圖形和動態座標軸。 -
sequences:用來儲存從 Value 複製資料的輸出緩衝區。
類別變數
表示對應至 之輸入和輸出的 Function 符號實體。
通常用於評估的 Variable 屬性包括:
public string Name { get; }
變數的名稱。
public NDShape Shape { get; }
變數的形狀。
public DataType DataTye { get; }
DataType (#enum-datatype) Variable 所代表的資料。
public VariableKind Kind { get; }
public bool IsSparse { get; }
布林值,指出變數是否表示疏鬆資料。
public bool IsInput { get; }
布林值,指出變數是否為 Input。
public bool IsOutput { get; }
布林值,指出變數是否為 Output。
public bool IsParameter { get; }
布林值,指出變數是否為 Parameter。
public bool IsConstant { get; }
布林值,指出變數是否為常數。
public bool IsPlaceholder { get; }
布林值,指出變數是否為預留位置。
public IList<Axis> DynamicAxes { get; }
傳回 Variable 的動態座標軸。
public Function Owner { get; }
傳回 Variable 是輸出的函式。
null當 Variable 不是 VariableKind Output 時傳回 。
類別 DeviceDescriptor
表示計算裝置實例。
類別 DeviceDescriptor 包含下列屬性和方法:
public int Id { get; }
裝置的識別碼。
public DeviceKind Type { get; }
public static DeviceDescriptor CPUDevice { get; }
代表本機系統上 CPU 裝置的 DeviceDescriptor。
public static DeviceDescriptor GPUDevice(int deviceId)
取得本機系統上 GPU 裝置的 DeviceDescriptor,其具有指定的 CUDA 裝置識別碼。
參數:
-
deviceId:CUDA 裝置識別碼。
public static IList<DeviceDescriptor> AllDevices()
取得所有可用/支援裝置的描述項清單。
類別 NDShape
表示多維度矩形圖形。
public NDShape()
建構具有 0 個座標軸的 NDShape,代表純量。
public NDShape(int numAxes, int dimension)
使用指定的順位和維度大小來建構 NDShape 實例。 每個軸都有相同的維度。
參數:
-
numAxes:圖形的座標軸數目。 -
dimension:套用至每個座標軸的維度大小。
public NDShape(int numAxes)
建構具有指定順位的 NDShape 實例。 每個座標軸中的維度為 NDShape.InferredDimension 。
參數:
-
numAxes:圖形的座標軸數目。
public static NDShape CreateNDShape(IEnumerable<int> dimensions)
建立具有指定維度的 NDShape 實例。 參數:
-
dimensions:每個座標軸的維度大小。
public int Rank { get; }
NDShape 的排名。
public IList<int> Dimensions { get; }
NDShape 的維度。
public int TotalSize { get; }
Shape 代表的矩形圖形大小總計。
public int this[int key] { get; }
傳回指定之座標軸的維度大小。
public int IsUnknown { get; }
布林值,指出圖形是否為特殊未知圖形。
public int HasInferredDimension { get; }
布林值,指出圖形任何座標軸的維度大小是否未知/推斷 (NDShape.InferredDimension) 。
public NDShape AppendShape(NDShape shape)
建立並傳回建構的新圖形,方法是將指定 'shape' 的維度附加至 this 圖形的維度。
public NDShape SubShape(int beginAxisId, int endAxisId)
建立並傳回新的 NDShape 實例,其維度與 this 圖形的指定座標軸範圍 [beginAxisId, endAxisId) 相同。
public NDShape SubShape(int beginAxisId)
建立並傳回新的 NDShape 實例,其維度與 this 圖形的座標軸範圍相同,介於 beginAxisId 軸 (內含) 和最後一個座標軸 (內含) 之間。
類別 NDArrayView
表示元素值的多維度可寫入或唯讀陣列。 此類型表示檢視,而且可能會有多個同時檢視 NDArrayView 實例基礎的資料。 基礎資料會以疏鬆或密集的格式儲存,且位於特定裝置上。
public NDArrayView(NDShape viewShape, float[] dataBuffer, DeviceDescriptor device, bool readOnly = false)
public NDArrayView(NDShape viewShape, double[] dataBuffer, DeviceDescriptor device, bool readOnly = false)
建構具有指定 'dataBuffer' 的 NDArrayView,其格式為指定裝置上的備份儲存體。
參數:
-
viewShape:正在建立的 NDArrayView 圖形。 -
dataBuffer:包含在 NDArrayView 中的資料值。 'dataBuffer' 必須至少大於指定之 'viewShape' 的總大小,而且必須大於所建立的 NDArrayView 物件。 -
device:應該建立 NDArrayView 物件的裝置。 -
readOnly:如果這個旗標為 ,則 NDArrayView 物件是true唯讀的。
public NDArrayView(NDShape viewShape, int[] colStarts, int[] rowIndices, float[] nonZeroValues, DeviceDescriptor device, bool readOnly = false)
public NDArrayView(NDShape viewShape, int[] colStarts, int[] rowIndices, double[] nonZeroValues, DeviceDescriptor device, bool readOnly = false)
以指定裝置上的疏鬆 CSC 格式建構具有指定儲存體的 NDArrayView。 指定的疏鬆資料必須逾時所建立的 NDArrayView 物件。
參數:
-
viewShape:正在建立的 NDArrayView 圖形。 -
colStarts:陣列會將每個資料行的索引保存至陣列rowIndices和nonZeroValues。 -
rowIndices:陣列,其中包含陣列nonZeroValues中對應元素的資料列索引。 -
nonZeroValues:保存疏鬆矩陣中所有非零值的陣列。 指定的疏鬆資料必須逾時所建立的 NDArrayView 物件。 -
device:應該建立 NDArrayView 物件的裝置。 -
readOnly:如果這個旗標為 ,則 NDArrayView 物件是true唯讀的。
public DeviceDescriptor Device
NDArrayView 所在裝置的 DeviceDescriptor。
public NDShape Shape
NDArrayView 的形狀。
public DataType DataType
NDArrayView 儲存之資料的 DataType。
public StroageFormat StorageFormat
NDArrayView 的儲存格式。
public bool IsSparse
布林值,指出 NDArrayView 是否包含疏鬆儲存格式的資料。
public bool IsReadOnly`
A boolean value indicating whether the NDArrayView is read-only.
***
```cs
public NDArrayView DeepClone()
在與檢視相同的裝置 this 上建立新的 NDArrayView,並將檢視的內容複寫到 this 新配置的檢視中。
public NDArrayView DeepClone(bool readOnly)
在與檢視相同的裝置 this 上建立新的 NDArrayView,並將檢視的內容複寫到 this 新配置的檢視中。
參數:
-
readOnly:如果這個旗標為 ,則新的 NDArrayView 物件是true唯讀的。
public NDArrayView DeepClone(DeviceDescriptor device, bool readOnly)
使用指定裝置上新配置的儲存體建立新的 NDArrayView,並將檢視的內容複寫到 this 新配置的檢視中。
參數:
-
device:應該在其中建立新的 NDArrayView 物件。 -
readOnly:如果這個旗標為 ,則新的 NDArrayView 物件是true唯讀的。
public NDArrayView Alias(bool readOnly)
建立新的 NDArrayView,這是檢視的 this 別名;也就是相同基礎資料上相同圖形 this 的新檢視。
參數:
-
readOnly:如果這個旗標為 ,則新的 NDArrayView 物件是true唯讀的。
public NDArrayView AsShape(NDShape newShape)
建立新的 NDArrayView,這是檢視的別名, this 但具有新的圖形。
參數:
-
newShape:新 NDArrayView 物件的圖形。
public void CopyFrom(NDArrayView source)
複製 'source' NDArrayView 的內容以 this 檢視。 'source' 檢視和 this 檢視的圖形必須相同。
參數:
-
source:來源 NDArrayView,其內容會this複製到檢視。
public void ChangeDevice(DeviceDescriptor device)
將 NDArrayView 的裝置變更為指定的裝置。
參數:
-
device:NDArrayView 物件的目標裝置。
類別 NDMask
表示用來將 NDArrayView 物件的特定區段指定為遮罩/不正確多維度遮罩。 此類型表示檢視,而且可能會有多個同時檢視 NDMask 實例基礎的資料。
public NDMask(NDShape shape, DeviceDescriptor device)
在指定的裝置上建構指定圖案的新 Mask 物件。
參數:
-
shape:NDMask 物件的圖形。 -
device:MDMask 物件的目標裝置。
public int MaskedCount { get; }
遮罩/無效值的數目。
public int Device { get; }
遮罩所在的裝置描述項
public int Shape { get; }
遮罩的形狀。
public void InvalidateSection(IEnumerable<int> sectionOffset, NDShape sectionShape)
將指定的子區段遮罩為無效。
參數:
-
sectionOffset:指定應該遮罩為無效之區段開始位置的清單。 -
sectionShape:圖形描述應該遮罩為不正確區段。
public void MarkSequenceBegin(IEnumerable<int> offset)
將指定的位置標示為序列開始。
參數:
-
sectionOffset:指定遮罩中應遮罩為序列開始之開始位置的清單。
public void MarkSequenceBegin(IEnumerable<int> offset, NDShape sectionShape)
將指定的子區段標示為序列開始。
參數:
-
offset:指定應該遮罩為序列開始之區段開始位置的清單。 -
sectionShape:圖形描述應該遮罩為序列開始的區段。
public void Clear()
清除遮罩。 所有目前遮罩為不正確值都會設定為有效。
public NDMask DeepClone(DeviceDescriptor device)
使用指定裝置上新配置的儲存體建立新的 NDMask,並將遮罩的內容複寫到 this 新配置的檢視中。
參數:
-
device:MDMask 物件的目標裝置。
public NDMask DeepClone()
在與遮罩相同的裝置 this 上,使用新配置的存放裝置建立新的 NDMask,並將遮罩的內容複寫到 this 新配置的遮罩中。
public NDMask Alias()
建立新的 NDMask,這是遮罩的 this 別名。
public void CopyFrom(NDMask source)
將 NDMask 的內容 source 複製到 this 遮罩。 遮罩和 this 遮罩的 source 圖形必須相同。
參數:
-
source:要檢this視其內容的來源 NDMask。
類別座標軸
表示 的 Variable 座標軸。 除了對應至變數圖形每個座標軸的靜態座標軸之外,類型為 'Input' 的變數和任何相依于 'Input' 變數的變數也有 2 個額外的動態座標軸,只有當 Variable 系結至計算期間的實際資料時,才會知道變數 (viz。序列軸和批次座標軸會指出多個序列的批次座標軸)
類別中定義了下列屬性 Axis
public string Name { get; }
軸的名稱。
public bool IsStatic { get; }
傳回布林值,指出 Axis 是否對應至靜態座標軸。
public bool IsDynamic { get; }
傳回布林值,指出 Axis 是否對應至動態座標軸。
類別 Utils
public static void SetMaxNumCPUThreads(int numCPUThreads)
設定任何個別計算作業要使用的全進程 CPU 執行緒數目上限。
public static int GetMaxNumCPUThreads()
傳回任何個別計算作業要使用的全進程 CPU 執行緒數目上限。
public static void SetTraceLevel(TraceLevel value)
指定全域記錄詳細資訊層級。
public static TraceLevel GetTraceLevel()
傳回目前的記錄詳細資訊層級。
enum VariableKind
表示符號 Variable 物件的種類
enum VariableKind { Input, Output, Parameter, Constant, Placeholder };
enum DataType
表示符號資料實體或實際資料的資料類型。
enum DataType { Unknown, Float, Double };
enum DeviceKind
表示計算裝置的類型。
enum DeviceKind { CPU, GPU };
enum StorageFormat
表示 NDArrayView 實例基礎的儲存體格式。
enum StorageFormat { Dense, SparseCSC, SparseBlockCol };
enum ParameterCloningMethod
表示在複製函式時如何處理參數。
enum ParameterCloningMethod {
Share, // Parameters are shared between the Function being cloned and the new clone.
Clone, // New learnable Parameters are created and initialized with the current values of the corresponding Parameters of the Function being cloned.
Freeze // Parameters are cloned and made immutable.
};
enum TraceLevel
表示記錄詳細資訊層級。
enum TraceLevel { Error, Warning, Info };