当我从生成器创建一个tf数据集并尝试运行tf2.0代码时,它会向我发出一条警告消息。 代码: import tensorflow as tf
from tensorflow.keras.layers import Dense, Flatten, Conv2D
from tensorflow.keras import Model
def my_function():
import numpy as np
for i in range(1000):
yield np.random.random(size=(28, 28, 1)), [1.0]
train
我正在重写与TF 2.0兼容的代码。不幸的是,网站提供的几乎每个示例都使用keras。但是,我想编写带有原始tensorflow函数的代码。
在某种程度上,在培训过程中计算和应用梯度的新方法如下所示(从窃取的代码):
# Optimization process.
def run_optimization(x, y):
# Wrap computation inside a GradientTape for automatic differentiation.
with tf.GradientTape() as g:
pred = logistic_regre
from tensorflow.keras.applications import VGG16
from tensorflow.keras import backend as K
model = VGG16(weights='imagenet',
include_top=False)
layer_name = 'block3_conv1'
filter_index = 0
layer_output = model.get_layer(layer_name).output
loss = K.mean(layer_output[:,
我试图在我的输出层使用tf.floor,但是即使我试图用身份梯度覆盖它,仍然得到“无梯度”的错误。 import tensorflow as tf
from tensorflow import keras
def transfer(x):
with tf.compat.v1.get_default_graph() as g:
with g.gradient_override_map({'Floor': 'Identity'})
return tf.floor(x * 90) / 90
input = kera
我正试图将几个“网络”合并成一个最终的损失函数。我想知道我所做的是否是“合法的”,到目前为止,我似乎无法做到这一点。我用的是tensorflow概率:
主要问题是:
# Get gradients of the loss wrt the weights.
gradients = tape.gradient(loss, [m_phis.trainable_weights, m_mus.trainable_weights, m_sigmas.trainable_weights])
# Update the weights of our linear layer.
optimizer.apply_
使用“旧的”Keras库,我使用keras.backend.gradients()函数为我的CNN创建了热图,如下所示: # load model and image, then predict the class this image belongs to
model = load_model(os.path.join(model_folder, "custom_model.h5"))
image = image.load_img(image_path)
img_tensor = image.img_to_array(image)
img_tensor = np.expan
我想形象化CNN中给定的特征地图所学习到的模式(在本例中,我使用vgg16)。为此,我创建了一个随机图像,通过网络输入到所需的卷积层,选择特征映射并找到与输入相关的梯度。其想法是以这样一种方式改变输入,以最大限度地激活所需的功能映射。使用tensorflow 2.0,我有一个GradientTape,它跟踪函数,然后计算梯度,但是梯度不返回,为什么它不能计算梯度?
import tensorflow as tf
import matplotlib.pyplot as plt
import time
import numpy as np
from tensorflow.keras.applica
我试图使用tensorflow-GPUVersion2.4.1和KerasVersion2.4.3计算来自VGG16 w.r.t的一个图像输入的梯度,代码如下:
from keras.applications import VGG16
from keras import backend as K
model = VGG16(weights = 'imagenet',
include_top = False)
layer_name = 'block3_conv1'
filter_index = 0
layer_output = mode
假设我们有一个使用BatchNormalization的简单Keras模型:
model = tf.keras.Sequential([
tf.keras.layers.InputLayer(input_shape=(1,)),
tf.keras.layers.BatchNormalization()
])
如何在GradientTape中实际使用它?以下内容似乎不起作用,因为它没有更新移动平均线?
# model training... we want the output values to be clos
我正在尝试在CNN 2.0中训练TensorFlow模型。这是一个多类分类任务。我正在简化代码,使其更具可读性:
# Loss function
loss = tf.keras.metrics.CategoricalCrossentropy()
# Optimizer
optimizer = tf.optimizers.Adam(learning_rate = 0.0005)
# Training:
for epoch in range(1000):
# fetch mini batch of data
X_batch, y_batch = fetch_batch(
我在keras中创建了自定义损失(加权绝对错误),但实现不起作用-我得到一个错误ValueError: No gradients provided for any variable: ['my_model/conv2d/kernel:0', 'my_model/conv2d/bias:0'].
我想对每个像素应用不同的权重。
class WeightedMeanAbsoluteError(tf.keras.metrics.Metric):
def __init__(self, name='weighted_mean_absolute_error
当我使用Keras或模型子调用API创建模型,以及使用tf.GradientTape()来训练模型时,请有人指导我如何将模型图记录到张拉板上。
# Get the model.
inputs = keras.Input(shape=(784,), name='digits')
x = layers.Dense(64, activation='relu', name='dense_1')(inputs)
x = layers.Dense(64, activation='relu', name='dense_2')(x
嗨,我试着复制这个链接的结果。
当我运行这一行代码时,我遇到了这个错误RuntimeError: tf.gradients is not supported when eager execution is enabled. Use tf.GradientTape instead。
grads = K.gradients(class_output, last_conv_layer.output)[0]
但是,当我更改到这一行代码时
grads = tf.GradientTape(class_output, last_conv_layer.output)[0]
我得到了这个错误“-->2
我需要一个循环来创建扩散模型--但在tf.GradientTape()中循环似乎会创建一个无限循环--内存不断增加,直到崩溃。这是我的假设,因为我没有得到任何错误消息。
无论模型有多小,这种情况都会发生-所以这不是我有多少可用内存的问题。
下面是一个最小的可重现代码:
import numpy as np
import tensorflow as tf
from tensorflow import keras
class Test(tf.keras.Model):
def __init__(self, encoder, **kwargs):
super(Test,
我正在研究一个多输出模型,在计算最终的训练损失之前,我需要检查每个输出分支的样本损失。我怎样才能做到这一点?现在,我正在使用model.fit()方法,这给出了每个分支的批处理总损失和个人损失。
下面是我使用的自定义函数:
class CustomModel(keras.Model):
def train_step(self, data):
# Unpack the data. Its structure depends on your model and
# on what you pass to `fit()`.
x, y = data
with
我已经将我在Python中的tensorflow从1.14更新到了2.0。现在我遇到了一个梯度计算的问题,为了查看一个层的GradCam可视化。
例如,对于具有三个类别的分类问题,使用已在数据上拟合的名为my_cnn_model的模型。例如,如果我想为一个名为"conv2d_3“的层”计算gradCam“,我会从1.14中的以下内容开始:
layer_conv = my_cnn_model.get_layer( "conv2d_3" )
#I want it with respect to the first class (so 0), because for exa
# importing libraries
import numpy as np
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from tensorflow.keras.optimizers import Adam
from tensorflow.keras.losses import MSE
# creating keras model
model = tf.keras.Sequential()
model.a
我试着用tf.GradientTape来计算梯度。当我尝试这样做时,使用loss和Model.variables (tf.keras.Model)作为输入,这是一个返回None数组的结果。我做错了什么?我使用的tensorflow版本是1.9。
Model = CubeValModel(TrainingCurves)
LearningRate = 0.0005
TrainOpe = tf.train.AdamOptimizer(LearningRate, name="MainTrainingOpe")
for i in range (5):
with tf.Grad
我正在使用Tensorflow DCGAN实现指南中提供的代码编写一个自定义训练循环。我想在训练循环中添加回调。在Keras中,我知道我们将它们作为参数传递给'fit‘方法,但是找不到关于如何在自定义训练循环中使用这些回调的资源。我从Tensorflow文档中添加了定制训练循环的代码:
# Notice the use of `tf.function`
# This annotation causes the function to be "compiled".
@tf.function
def train_step(images):
noise = tf.ra
我想得到梯度模型的损失函数与特定层的输出在训练期间。接下来我要做的是,在下一个学习时代,用梯度值来修改图层中的一些东西。那么如何获得梯度呢?
下面是一个很小的例子。MinimalRNNCell代码是从TensorFlow的网站复制的,提供玩具数据只是为了复制行为。
import tensorflow as tf
from tensorflow.keras.layers import RNN, SimpleRNNCell, SimpleRNN, Layer, Dense, AbstractRNNCell
from tensorflow.keras import Model
import num
import tensorflow as tf
def f(x):
return tf.multiply(x, x)
x = tf.Variable([3.])
with tf.GradientTape() as test_tape:
test_tape.watch(x)
with tf.GradientTape() as train_tape:
train_tape.watch(x)
fx = f(x)
gradient = train_tape.gradient(fx, x) # df(x)/x = d(x^2)