Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何提取Keras层权重作为可训练参数?_Python_Tensorflow_Keras - Fatal编程技术网

Python 如何提取Keras层权重作为可训练参数?

Python 如何提取Keras层权重作为可训练参数?,python,tensorflow,keras,Python,Tensorflow,Keras,我在训练一个像GAN一样的模特,但不完全一样。我在TensorFlow后端使用Keras 我有两款Keras车型G和D。我想在G中输出目标层的权重参数,作为模型D的输入,并使用D.predict(G.weights)的结果作为G的损失函数的一部分,即D是不可训练的,但参数G.weights是可训练的。通过这种方式,您希望进一步训练G.weights 我试着用 def自定义损耗(ytrue,ypred): ###与ytrue和ypred有关 权重=自身。G.get_层(“目标”)。get_权重()

我在训练一个像GAN一样的模特,但不完全一样。我在TensorFlow后端使用Keras

我有两款Keras车型
G
D
。我想在
G
中输出目标层的权重参数,作为模型D的输入,并使用
D.predict(G.weights)
的结果作为
G
的损失函数的一部分,即
D
是不可训练的,但参数
G.weights
是可训练的。通过这种方式,您希望进一步训练
G.weights

我试着用

def自定义损耗(ytrue,ypred):
###与ytrue和ypred有关
权重=自身。G.get_层(“目标”)。get_权重()
损失+=自身D.预测(重量)
回波损耗
但显然它不起作用,因为
weight
只是一个numpy数组,不可训练


有没有一种方法可以获得在Keras中仍然可以训练的模型重量?我是Keras的新手,对TensorFlow知之甚少。如果有人能帮上忙,我会非常感激的

如您所述,
layer.get_weights()
将返回矩阵的当前权重。您希望为预测提供的是计算图中表示此类权重的节点。您可以改用
layer.trainable_weights
,它将返回两个
tf.Variable
,您可以将其馈送到另一层/模型

请注意,一个变量用于单元到单元的连接,另一个变量用于偏差。如果你想从中得到一个展平张量,你可以这样做:

从keras导入后端为K
...
ww,bias=self.G.get\u层(“目标”)。可训练的\u权重
展平权重=展平()

谢谢!这正是我需要的。我可以问你下面的另一个问题吗?非常感谢!此外,我还有另一个问题要问:我是否可以对Keras中的可训练参数进行排序?在输入其他操作之前,我想做一些类似于
K.sort(layer.trainable\u weights)
的事情,我该怎么做?很高兴能提供帮助!我想您可以将
K.sort
应用于展平权重。不管怎样,对我来说,这看起来是一种非常奇怪的需要。如果你想进一步解释,使答案更准确,请写一篇专门的帖子。请参阅。