Как я могу избежать повторного заполнения моего буфера tf.data в каждую эпоху tf.keras при использовании tf.distribute?

Мне очень нравится, насколько чистый ответ Бровафа , но, к сожалению, плохие реализации Math.random оставляют шанс для столкновения.

Вот аналогичное решение, совместимое с RFC4122 версии 4, которое решает эту проблему, компенсируя первые 13 шестнадцатеричных чисел шестнадцатеричной частью метки времени. Таким образом, даже если Math.random находится на одном семестре, оба клиента должны будут генерировать UUID в то же самое миллисекунду (или через 10 000 лет позже), чтобы получить тот же UUID:

function generateUUID() { // Public Domain/MIT
    var d = new Date().getTime();
    if (typeof performance !== 'undefined' && typeof performance.now === 'function'){
        d += performance.now(); //use high-precision timer if available
    }
    return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
        var r = (d + Math.random() * 16) % 16 | 0;
        d = Math.floor(d / 16);
        return (c === 'x' ? r : (r & 0x3 | 0x8)).toString(16);
    });
}

Вот скрипка для тестирования.

0
задан Carl Thomé 16 January 2019 в 12:59
поделиться

1 ответ

shuffle имеет аргумент reshuffle_each_iteration, который можно установить на False, чтобы перетасовка происходила только в 1-ю эпоху, а состояние поддерживалось в будущих эпохах.

0
ответ дан kvish 16 January 2019 в 12:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: