小编Wil*_*ill的帖子

Tensorflow 2.0 不计算梯度

我想可视化 CNN 中给定特征图所学的模式(在本例中,我使用的是 vgg16)。为此,我创建了一个随机图像,通过网络馈送到所需的卷积层,选择特征图并找到相对于输入的梯度。这个想法是以这样一种方式改变输入,以最大化所需特征图的激活。使用 tensorflow 2.0 我有一个 GradientTape 跟随函数然后计算梯度,但是梯度返回 None,为什么它无法计算梯度?

import tensorflow as tf
import matplotlib.pyplot as plt
import time
import numpy as np
from tensorflow.keras.applications import vgg16

class maxFeatureMap():

    def __init__(self, model):

        self.model = model
        self.optimizer = tf.keras.optimizers.Adam()

    def getNumLayers(self, layer_name):

        for layer in self.model.layers:
            if layer.name == layer_name:
                weights = layer.get_weights()
                num = weights[1].shape[0]
        return ("There are {} feature maps in {}".format(num, layer_name))

    def getGradient(self, layer, feature_map):

        pic = vgg16.preprocess_input(np.random.uniform(size=(1,96,96,3))) ## Creates values between 0 and 1
        pic …
Run Code Online (Sandbox Code Playgroud)

python gradient-descent conv-neural-network tensorflow

8
推荐指数
1
解决办法
5244
查看次数

图像分类任务上的损失为 NaN

我正在尝试在包含名人面孔的图像数据集上训练一个基本的 CNN,其中分配的类对应于每个人。鉴于大约有 10,000 个类,我使用了 sparse_categorical_crossentropy 而不是 one-hot 编码类,但是一旦网络开始训练,损失就停留在一个数字上,并且在几批之后变为 NaN 我尝试了不同的图像缩放和一个较小的网络,但没有运气。关于什么可能导致 NaN 的任何线索?

生成批次的函数:

def Generator(data, label, batch_size):
    url = "../input/celeba-dataset/img_align_celeba/img_align_celeba/"
    INPUT_SHAPE = (109, 109)
    i = 0
    while True:
        image_batch = [ ]
        label_batch = [ ]
        for b in range(batch_size):
            if i == len(data):
                i = 0
                data, label = shuffle(data, label)
            sample = data[i]
            label_batch.append(label[i])
            i += 1
            image = cv2.resize(cv2.imread(url + sample), INPUT_SHAPE)
            image_batch.append((image.astype(float)) / 255)

        yield (np.array(image_batch), np.array(label_batch))
Run Code Online (Sandbox Code Playgroud)

该模型:

class CNN():

def __init__(self, train, val, y_train, …
Run Code Online (Sandbox Code Playgroud)

python deep-learning conv-neural-network keras tensorflow

5
推荐指数
1
解决办法
917
查看次数