简体   繁体   English

训练 CNN:ValueError:没有为任何变量提供梯度

[英]Training CNN: ValueError: No gradients provided for any variable

I want to train a model with the following layers:我想用以下层训练 model:

embedding_dim = 80

model = tf.keras.Sequential()
model.add(tf.keras.layers.Conv2D(64, 3, padding='same', activation='relu', input_shape=(50, 120, 3)))
model.add(tf.keras.layers.MaxPool2D(padding='same'))

model.add(tf.keras.layers.Conv2D(128, 3, padding='same', activation='relu'))
model.add(tf.keras.layers.MaxPool2D(padding='same'))

model.add(tf.keras.layers.Conv2D(256, 3, padding='same', activation='relu'))

model.add(tf.keras.layers.Conv2D(256, 3, padding='same', activation='relu'))

model.add(tf.keras.layers.Conv2D(512, 3, padding='same', activation='relu'))

model.add(tf.keras.layers.Conv2D(512,  2, strides=(2, 4), activation='relu'))

model.add(tf.keras.layers.Conv2D(512,  3, activation='relu'))

model.add(tf.keras.layers.Lambda(add_timing_signal_nd))

model.add(tf.keras.layers.Flatten())
model.add(tf.keras.layers.Dense(embedding_dim))

After, I run之后,我跑

model.compile(optimizer='adam', loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True, reduction='none'), metrics=['accuracy'])

model.fit(image_dataset, epochs=10, validation_data=val_dataset)

I get the following error我收到以下错误

ValueError: No gradients provided for any variable: ['conv2d/kernel:0', 'conv2d/bias:0', 'conv2d_1/kernel:0', 'conv2d_1/bias:0', 'conv2d_2/kernel:0', 'conv2d_2/bias:0', 'conv2d_3/kernel:0', 'conv2d_3/bias:0', 'conv2d_4/kernel:0', 'conv2d_4/bias:0', 'conv2d_5/kernel:0', 'conv2d_5/bias:0', 'conv2d_6/kernel:0', 'conv2d_6/bias:0', 'dense/kernel:0', 'dense/bias:0'].

For further context, add_timing_signa_nd is defined as the following对于进一步的上下文, add_timing_signa_nd定义如下

def add_timing_signal_nd(x, min_timescale=1.0, max_timescale=1.0e4):
    """
    Args:
        x: a Tensor with shape [batch, d1 ... dn, channels]
        min_timescale: a float
        max_timescale: a float
    Returns:
        a Tensor the same shape as x.
    """
    static_shape = x.get_shape().as_list()
    num_dims = len(static_shape) - 2
    channels = tf.shape(x)[-1]
    num_timescales = channels // (num_dims * 2)
    log_timescale_increment = (
            math.log(float(max_timescale) / float(min_timescale)) /
            (tf.cast(num_timescales, dtype=tf.float32) - 1))
    inv_timescales = min_timescale * tf.exp(
            tf.cast(tf.range(num_timescales), dtype=tf.float32) * -log_timescale_increment)
    for dim in xrange(num_dims):
        length = tf.shape(x)[dim + 1]
        position = tf.cast(tf.range(length), dtype=tf.float32)
        scaled_time = tf.expand_dims(position, 1) * tf.expand_dims(
                inv_timescales, 0)
        signal = tf.concat([tf.sin(scaled_time), tf.cos(scaled_time)], axis=1)
        prepad = dim * 2 * num_timescales
        postpad = channels - (dim + 1) * 2 * num_timescales
        signal = tf.pad(signal, [[0, 0], [prepad, postpad]])
        for _ in xrange(1 + dim):
            signal = tf.expand_dims(signal, 0)
        for _ in xrange(num_dims - 1 - dim):
            signal = tf.expand_dims(signal, -2)
        x += signal
    return x

If it helps by input sizes are the following如果它有助于输入大小如下

(3, 50, 120, 3)
(3, 50, 120, 3)
(3, 50, 120, 3)
(1, 50, 120, 3)

Also, I'm planning to extract the weights after training to use them in another problem.另外,我计划在训练后提取权重以将它们用于另一个问题。

Thanks in advance!提前致谢!

I guess the image_dataset or val_dataset is not proper.我猜 image_dataset 或 val_dataset 不合适。 Follow your code, I simulated some data(include labels) to train and it could run properly.按照你的代码,我模拟了一些数据(包括标签)进行训练,可以正常运行。

image_dataset = np.random.uniform(0, 1, (3000, 50, 120, 3))
image_dataset_y = np.random.uniform(0, embedding_dim, (3000,)).astype(np.int)
val_dataset = np.random.uniform(0, 1, (300, 50, 120, 3))
val_dataset_y = np.random.uniform(0, embedding_dim, (300,)).astype(np.int)
model.fit(image_dataset, image_dataset_y , batch_size=30, epochs=10, validation_data=(val_dataset, val_dataset_y))

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 ValueError:没有为任何变量提供渐变:['Variable:0'] - ValueError: No gradients provided for any variable: ['Variable:0'] TensorFlow 错误:ValueError:没有为任何变量提供梯度 - TensorFlow Error: ValueError: No gradients provided for any variable TF Keras - ValueError:没有为任何变量提供梯度 - TF Keras - ValueError: No gradients provided for any variable Keras ValueError:没有为任何变量提供梯度 - Keras ValueError: No gradients provided for any variable ValueError:没有为策略梯度中的任何变量提供梯度 - ValueError: No gradients provided for any variable in policy gradient Tensorflow ValueError:没有为任何变量提供梯度: - Tensorflow ValueError: No gradients provided for any variable: Adam 优化器:ValueError:没有为任何变量提供梯度 - Adam optimizer: ValueError: No gradients provided for any variable ValueError:没有为任何变量提供梯度 - Tensorflow 2.0 - ValueError: No gradients provided for any variable - Tensorflow 2.0 Tensorflow | ValueError:没有为任何变量提供梯度 - Tensorflow | ValueError: No gradients provided for any variable Python,Tensorflow ValueError:没有为任何变量提供梯度 - Python, Tensorflow ValueError: No gradients provided for any variable
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM