gpt4 book ai didi

Tensorflow:使用梯度下降优化输入

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

我有一个 TensorFlow 模型(一个卷积神经网络),我成功地使用梯度下降 (GD) 对一些输入数据进行了训练。

现在,在第二步中,我想提供一个输入图像作为初始化,然后使用 GD 使用固定网络参数优化这个输入图像。损失函数会有所不同,但这是一个细节。

所以,我的主要问题是如何告诉梯度下降算法

  • 停止优化网络参数
  • 优化输入图像

  • 第一个可能可以做到这一点
    Holding variables constant during optimizer

    你们对第二点有什么想法吗?

    我想我可以使用 TF 梯度函数自己重新编码梯度下降算法,但是我的直觉告诉我应该有一种更简单的方法,这也让我可以从更复杂的 GD 变体(Adam 等)中受益。

    最佳答案

    无需您自己实现 SDG。 TensorFlow 提供了所有功能:

    import tensorflow as tf
    import numpy as np

    # some input
    data_pldhr = tf.placeholder(tf.float32)
    img_op = tf.get_variable('input_image', [1, 4, 4, 1], dtype=tf.float32, trainable=True)
    img_assign = img_op.assign(data_pldhr)

    # your starting image
    start_value = (np.ones((4, 4), dtype=np.float32) + np.eye(4))[None, :, :, None]


    # override variable_getter
    def nontrainable_getter(getter, *args, **kwargs):
    kwargs['trainable'] = False
    return getter(*args, **kwargs)


    # all variables in this scope are not trainable
    with tf.variable_scope('myscope', custom_getter=nontrainable_getter):
    x = tf.layers.dense(img_op, 10)
    y = tf.layers.dense(x, 10)

    # the usual stuff
    cost_op = tf.losses.mean_squared_error(x, y)
    train_op = tf.train.AdamOptimizer(0.1).minimize(cost_op)

    # fire up the training process
    with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    sess.run(img_assign, {data_pldhr: start_value})

    print(sess.run(img_op))
    for i in range(10):
    _, c = sess.run([train_op, cost_op])
    print(c)
    print(sess.run(img_op))

    关于Tensorflow:使用梯度下降优化输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39465526/

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