Exemple #1
0
def init_dropout_descriptor(fn, handle):
    dropout_desc = cudnn.DropoutDescriptor()

    dropout_states_size = ctypes.c_long()
    check_error(
        cudnn.lib.cudnnDropoutGetStatesSize(handle,
                                            ctypes.byref(dropout_states_size)))

    dropout_states = torch.cuda.ByteTensor(dropout_states_size.value)
    dropout_desc.set(handle, fn.dropout, dropout_states, fn.seed)
    return dropout_desc
Exemple #2
0
def init_dropout_descriptor(handle, dropout, train, dropout_seed,
                            dropout_state):
    dropout_desc_name = 'desc_' + str(torch.cuda.current_device())
    dropout_p = dropout if train else 0
    if (dropout_desc_name not in dropout_state) or (
            dropout_state[dropout_desc_name].get() is None):
        dropout_state[dropout_desc_name] = Unserializable(
            cudnn.DropoutDescriptor(handle, dropout_p, dropout_seed))
    dropout_desc = dropout_state[dropout_desc_name].get()
    dropout_desc.set_dropout(dropout_p, dropout_seed)
    return dropout_desc
Exemple #3
0
def init_rnn_descriptor(fn, handle):
    dropout_desc_name = 'desc_' + str(torch.cuda.current_device())
    dropout_p = fn.dropout if fn.train else 0
    if (dropout_desc_name not in fn.dropout_state) or (
            fn.dropout_state[dropout_desc_name].get() is None):
        fn.dropout_state[dropout_desc_name] = Unserializable(
            cudnn.DropoutDescriptor(handle, dropout_p, fn.dropout_seed))
    dropout_desc = fn.dropout_state[dropout_desc_name].get()
    dropout_desc.set_dropout(dropout_p, fn.dropout_seed)
    return cudnn.RNNDescriptor(handle, fn.hidden_size, fn.num_layers,
                               dropout_desc, fn.input_mode, fn.bidirectional,
                               fn.mode, fn.datatype)
Exemple #4
0
def init_dropout_descriptor(fn, handle):
    return cudnn.DropoutDescriptor(handle, fn.dropout, fn.dropout_seed)