Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Tensorflow 如何将dropConnect应用于keras中的重复权重_Tensorflow_Keras_Lstm - Fatal编程技术网

Tensorflow 如何将dropConnect应用于keras中的重复权重

Tensorflow 如何将dropConnect应用于keras中的重复权重,tensorflow,keras,lstm,Tensorflow,Keras,Lstm,我使用的是Keras,我想在LSTM中的隐藏到隐藏权重上应用dropConnect。我发现Keras只允许使用(经常性的_-dropout)在隐藏状态上应用dropout 我正在尝试对此进行自定义实现。我正在尝试使用以下方法创建自定义正则化器: def dropConnect_reg(weight_matrix): return tf.nn.dropout(weight_matrix, rate = 0.5) 然后按如下方式使用它(任务是语言建模,因此我在vocab上应用了softma

我使用的是Keras,我想在LSTM中的隐藏到隐藏权重上应用dropConnect。我发现Keras只允许使用(经常性的_-dropout)在隐藏状态上应用dropout

我正在尝试对此进行自定义实现。我正在尝试使用以下方法创建自定义正则化器:

def dropConnect_reg(weight_matrix):
    return tf.nn.dropout(weight_matrix, rate = 0.5)
然后按如下方式使用它(任务是语言建模,因此我在vocab上应用了softmax层):

然而,我不认为这是正确的。在不使用已实现的递归正则化器的情况下,损失是预期的标量数(分类交叉熵损失)。但是,当使用它时,它会输出一个完整的损失数组,而不是只有一个数字(维度:time_steps,time_steps*4)。我目前也不确定这是否仅在培训期间按预期应用


关于如何正确实施这一点,有什么想法吗

如果您只需要LSTM的最后一次输出,则需要设置
return\u sequences=False
。如果您只想在培训期间申请退学,则需要以下内容:

def dropconnect\u正则化器(权重矩阵):
返回tf.nn.dropout(权重矩阵,比率=0.5)
如果培训:
正则化器=dropconnect\u正则化器
其他:
正则化器=无
添加(LSTM(650,递归正则化器=正则化器))

如果您只需要LSTM的最后一次输出,则需要设置
return\u sequences=False
。如果您只想在培训期间申请退学,则需要以下内容:

def dropconnect\u正则化器(权重矩阵):
返回tf.nn.dropout(权重矩阵,比率=0.5)
如果培训:
正则化器=dropconnect\u正则化器
其他:
正则化器=无
添加(LSTM(650,递归正则化器=正则化器))
model.add(LSTM(650, return_sequences=True, recurrent_regularizer=dropConnect_reg))
model.add(Dense(vocab_size, activation='softmax'))