我正在張量流中創建一個稀疏張量,大約為 4,000,000 X 56,000,000。56M 列是特征列 AKA 的大約 10,600 個可能值之間的互動變數,即所有值的組合。
Tensorflow 的稀疏張量采用一個索引引數,它是一個串列串列,其中每個子串列 [x, y] 表示稀疏張量中值的行和列。
我有互動變數的組合:
combos = []
grouped_feature = df.groupby('feature')
for name, group in grouped_feature:
combos.append([*combinations(group.feature.unique(), 2)])
這給了我一個元組串列的串列。每個子串列中的元組對應于我的稀疏張量中應該為 1 的組合
然后我跑了:
indices = []
for i in range(len(combos)):
for j in range(len(combos[i])):
indices.append([i, hash(combos[i][j])])
要獲得正確的串列格式串列,但我需要更改哈希函式以將每個組合映射到 56M 值之一。我怎樣才能做到這一點?還是有更好的方法來做到這一點?我在 tensorflow 中找不到用于填充稀疏張量的內置方法/函式
uj5u.com熱心網友回復:
您可以將哈希 mod 獲取要映射到的范圍內的值的數量。
例如
NUM_VALUES = 56 * 10**6
indices = []
for i in range(len(combos)):
for j in range(len(combos[i])):
indices.append([i, hash(combos[i][j]) % NUM_VALUES])
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/432303.html
