我想跟踪张量板上的梯度。然而,由于会话中运行的语句是不是一个东西了和write_grads的说法tf.keras.callbacks.TensorBoard是depricated,我想知道如何跟踪梯度的培训期间Keras或tensorflow 2.0。
我目前的方法是为此目的创建一个新的回调类,但没有成功。也许其他人知道如何完成这种高级的东西。
为测试创建的代码如下所示,但会独立于将梯度值打印到控制台或张量板而遇到错误。
import tensorflow as tf
from tensorflow.python.keras import backend as K
mnist = tf.keras.datasets.mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0
model = tf.keras.models.Sequential([
tf.keras.layers.Flatten(input_shape=(28, 28)),
tf.keras.layers.Dense(128, activation='relu', name='dense128'),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(10, activation='softmax', name='dense10')
])
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
class GradientCallback(tf.keras.callbacks.Callback):
console = True
def on_epoch_end(self, epoch, logs=None):
weights = [w for w in self.model.trainable_weights if 'dense' in w.name …Run Code Online (Sandbox Code Playgroud) 我需要帮助计算 Keras 中模型输出和输入的导数。
我想为损失函数添加一个正则化函数。正则化器包含分类器函数的导数。所以我试图取模型输出的导数。该模型是一个带有一个隐藏层的 MLP。数据集是 MNIST。当我编译模型并取导数时,我得到 [None] 作为结果而不是导数函数。
我看过类似的帖子,但也没有得到答案: 将 Keras 模型的导数导出到输入是返回全零
这是我的代码。请帮我解决问题。
import keras
from keras.datasets import mnist
from keras.models import Sequential
from keras.layers import Dense
from keras import backend as K
num_hiddenNodes = 1024
num_classes = 10
(X_train, y_train), (X_test, y_test) = mnist.load_data()
X_train = X_train.reshape(-1, 28 * 28)
X_train = X_train.astype('float32')
X_train /= 255
y_train = keras.utils.to_categorical(y_train, num_classes)
model = Sequential()
model.add(Dense(num_hiddenNodes, activation='softplus', input_shape=(784,)))
model.add(Dense(num_classes, activation='softmax'))
# Compile the model
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
logits = model.output
# …Run Code Online (Sandbox Code Playgroud)