如何取tf.在Typescript中,张量类型变为数字类型



我正在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(); 
}

我在返回语句中得到这个错误:

Type 'number | number[] | number[][] | number[][][] | number[][][][] | number[][][][][] | number[][][][][][]' is not assignable to type 'number'.

我知道当你取多维数组的点积时,结果数组的维度/类型会有所不同,但对于我的情况,我知道我会得到一个单一的值,所以我只想返回一个单一的数字。有没有一种方法来解决这个问题,而不必改变函数的返回类型?

我不认为这是最佳实践,但是如果您不希望函数的返回类型列出所有这些类型选项,或者是Any,那么您可以强制将响应变量强制转换为unknown,如果有必要,然后强制转换为您期望的类型。

return similarityScore.arraySync() as number;

或者如果类型没有充分重叠

return similarityScore.arraySync() as unknown as number;

相关内容

最新更新