2017-08-10 94 views

回答

1

我覺得Masking()更隱蔽時間步驟;而嵌入(mask_zero = True)更像是一個數據過濾器。 掩蔽:

如果在該時間步長中輸入張量的所有值都等於mask_value,那麼時間步長將被屏蔽(跳過)中的所有下游層

具有任意mask_value。因此,您可以根據數據決定跳過沒有輸入的時間步驟或其他可以考慮的條件。

對於嵌入,您在輸入跳過計算中爲輸入= 0的數據覆蓋一個掩碼。這樣,您可以在一個時間步驟中通過網絡傳播全部數據,部分數據,沒有數據。這不是屏蔽時間步驟#3或類似的東西,它是輸入數據#i的屏蔽。此外,只有沒有輸入(輸入=零)可以被屏蔽。

因此,當然有我可以想到兩者完全相等的情況(當輸入= 0時,對於所有輸入都是0),但是它們的使用在另一個分辨率上。

+0

因此,在嵌入層中,我的序列中的時間步將被忽略,而不是在al序列上爲零。例如,在每個序列時間步#3中,應該忽略比我使用的嵌入層,並且如果只是零應該被忽略,不管在哪個時間步中它們是使用掩蔽層? –

+0

如果所有輸入都等於您可以指定的某個特定值,則應該忽略時間步驟,然後使用「使用蒙版」。如果零應該被忽略,(所以如果1輸入零,其他的值,時間步長仍然很強),使用嵌入 – Uvar

相關問題