我有一個匯入 GCP BigQuery 的多類分類 TensorFlow 模型。當您進行預測時,輸出是概率,它是 FLOAT 型別(概率)和 REPEATED 模式。在 BigQuery 中使用 SQL 獲取最大值索引的最佳方法是什么?
uj5u.com熱心網友回復:
如果你想從陣列中找到最大值的索引,我認為使用 UDF 會很方便。
CREATE TEMP FUNCTION index_of_max(probabilites ARRAY<FLOAT64>) AS ((
SELECT i FROM UNNEST(probabilites) p WITH OFFSET i
WHERE p = (SELECT MAX(p) FROM UNNEST(probabilites) p)
));
SELECT index_of_max(dense_1) index_of_max FROM UNNEST([
STRUCT([0.8611106872558594, 0.06648489832878113, 0.07240447402000427] AS dense_1),
STRUCT([0.6251607537269592, 0.2989124655723572, 0.07592668384313583]),
STRUCT([0.01427623350173235, 0.972910463809967, 0.01281337533146143])
]);
輸出:
[注意] 從零開始的索引
如果應用于以下示例,
uj5u.com熱心網友回復:
還考慮對已提議的 UDF 進行略微重構的版本
CREATE TEMP FUNCTION index_of_max(probabilites ARRAY<FLOAT64>) AS (( SELECT i FROM UNNEST(probabilites) p WITH OFFSET i ORDER BY p DESC LIMIT 1 ));
或者
CREATE TEMP FUNCTION index_of_max(probabilites ARRAY<FLOAT64>) AS (( SELECT i FROM UNNEST(probabilites) p WITH OFFSET i QUALIFY 1 = ROW_NUMBER() OVER(ORDER BY p DESC) ));
上一篇:Tensorflow:`tf.reshape((),(0))`在Eager模式下作業正常,但在Graph模式下ValueError