我使用 Keras 和 TensorFlow 对时尚 MNIST https://github.com/zalandoresearch/fashion-mnist下列的本教程 https://www.tensorflow.org/tutorials/keras/basic_classification .
它使用亚当优化器 https://www.tensorflow.org/api_docs/python/tf/train/AdamOptimizer找到最小化网络损失函数的模型参数值。网络的输入是形状为 [28, 28] 的二维张量,输出是形状为 [10] 的一维张量,它是 softmax 函数的结果。
一旦网络经过训练,我想将优化器用于另一项任务:找到一个最大化输出张量元素之一的输入。如何才能做到这一点?是否可以使用 Keras 来做到这一点,或者必须使用较低级别的 API?
由于输入对于给定的输出来说不是唯一的,因此如果我们可以对输入可以采用的值施加一些限制,那就更好了。
训练后的模型具有以下格式
model = keras.Sequential([
keras.layers.Flatten(input_shape=(28, 28)),
keras.layers.Dense(128, activation=tf.nn.relu),
keras.layers.Dense(10, activation=tf.nn.softmax)
])
我觉得你会想要对输入进行反向传播,将所有权重冻结到模型中。你可以做的是:
- 在输入层后面添加一个与输入具有相同尺寸的密集层,并将其设置为可训练
- 冻结模型的所有其他层。 (除了您添加的那个)
- 作为输入,输入单位矩阵并根据您想要的任何输出来训练您的模型。
This https://blog.keras.io/how-convolutional-neural-networks-see-the-world.html文章和this https://stackoverflow.com/questions/43353851/tune-input-features-using-backprop-in-keras如果您想根据输入进行反向传播,则帖子可能会为您提供帮助。这有点像你的目标,但你可以获得直觉。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)