我在 typescript 中使用 Tensorflow.js,我想獲得兩個 1D 張量的余弦相似度,但我在處理 tensorflow 使用的型別時遇到了麻煩。當我計算余弦相似度時,使用這個函式我應該得到一個數字,但是我得到了一堆不同的其他型別,包括數字。
function calculateCosineSimilarity(abstractEmbedding: tf.Tensor1D | Array<number>, queryEmbedding: tf.Tensor1D | Array<number>): number{
const dotProd: tf.Tensor = tf.dot(abstractEmbedding, queryEmbedding);
const lenAbstractEmbedding: tf.Tensor = tf.dot(abstractEmbedding, abstractEmbedding);
const lenQueryEmbedding: tf.Tensor = tf.dot(queryEmbedding, queryEmbedding);
const similarityScore: tf.Tensor = tf.div(dotProd, tf.mul(lenAbstractEmbedding,lenQueryEmbedding));
return similarityScore.arraySync();
}
我在 return 陳述句中收到此錯誤:
Type 'number | number[] | number[][] | number[][][] | number[][][][] | number[][][][][] | number[][][][][][]' is not assignable to type 'number'.
我知道當你采用多維陣列的點積時,結果陣列的維度/型別會有所不同,但就我而言,我知道我會得到一個值,所以我只想回傳一個數字。有沒有辦法解決這個問題而不必更改函式的回傳型別?
uj5u.com熱心網友回復:
我不認為這是最佳實踐,但是如果您不希望函式的回傳型別列出所有這些型別選項,或者是 Any,那么您可以在必要時強制將回應變數強制轉換為未知,然后到您期望的型別。
return similarityScore.arraySync() as number;
或者如果型別沒有充分重疊
return similarityScore.arraySync() as unknown as number;
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/489702.html
標籤:javascript 打字稿 张量流 张量流.js
