gpt4 book ai didi

python - 使用 tf.layer.conv 正确用法 - 激活和 Activity_regularizer

转载 作者:行者123 更新时间:2023-12-01 01:30:09 25 4
gpt4 key购买 nike

在tensorflow的tf.layer.conv1d网页中https://www.tensorflow.org/api_docs/python/tf/layers/conv1d ,它们提供了为您的模型设置“activation”和“activity_regularizer”的选项。我已经构建了一个模型,所以如果我可以设置activity_regularizer = tf.layer.batch_normalization(training=True) 或activation=tf.nn.leaky_relu(alpha = 0.001),那就太好了。但是,如果我尝试将任何输入放入 tf.layer.batch_normalization 或 tf.nn.leaky_relu 时,它们会给出错误,指出缺少参数(前者为“输入”,后者为“特征”)。

TLDR:

          conv1 = tf.layers.conv1d(inputs=_inputs, filters=6, kernel_size=4, strides=1,
padding='same', activation=tf.nn.leaky_relu, activity_regularizer = tf.layers.batch_normalization)

似乎“有效”(至少可以运行),但是:

          conv1 = tf.layers.conv1d(inputs=_inputs, filters=6, kernel_size=4, strides=1,
padding='same', activation=tf.nn.leaky_relu(alpha = 0.001), activity_regularizer = tf.layers.batch_normalization(training = True, trainable = True))

说缺少激活和activity_regularizer的参数。

我使用的激活和activity_regularizer可能完全错误,所以请随时纠正我。我希望有一个简单的解决方案,否则我唯一的选择是编写额外的代码行以将激活和批量标准化与 conv1d 分开。尽管如此,如果我无法更改它们的参数,我看不到内置 tf.layers.conv1d 的激活和 Activity_regularizer 的目的。

最后一点:我特别担心 tf.layer.batch_normalization,因为我假设它设置为默认的training=False 和trainable=True,这在“有效”的代码块中不应该总是这种情况。

最佳答案

activation 的参数应该是一个接受张量并返回张量的函数。 tf.nn.leaky_relu 就是这样一个函数。

tf.nn.leaky_relu(alpha = 0.001) 不是有效的 Python。您没有指定唯一必需的参数features。 Python 不知道如何在没有必需参数的情况下运行函数。你想要的是这样的:

def my_relu(features):
return tf.nn.leaky_relu(features, alpha=0.001)

tf.layers.conv1d(..., activation=my_relu, ...)

activity_regularizer 的参数是一个函数,它获取层的事件(即输出)并计算其惩罚。通常你会对大量的激活给予很高的惩罚。该函数应该输出一个标量。我不知道为什么 activity_regularizer = tf.layers.batch_normalization 没有提示,但它可能没有达到您的预期。典型的正则化器是 l1l2 范数(参见 https://keras.io/regularizers/ )。批量归一化是一个层,而不是正则化器。

关于python - 使用 tf.layer.conv 正确用法 - 激活和 Activity_regularizer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52959039/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com