Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.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 Tensorflow:tape.gradient()为GRU层返回None_Python_Tensorflow_Recurrent Neural Network - Fatal编程技术网

Python Tensorflow:tape.gradient()为GRU层返回None

Python Tensorflow:tape.gradient()为GRU层返回None,python,tensorflow,recurrent-neural-network,Python,Tensorflow,Recurrent Neural Network,我使用以下代码构建模型(tensorflow==1.14): 类模型(tf.keras.Model): 定义初始化(自): 超级(模型,自我)。\uuuu初始化 self.embedding=tf.keras.layers.embedding(10,5) self.rnn=tf.keras.layers.GRU(100)#GRU和LSTM都不起作用 自最终_层=tf.keras.layers.致密(10) self.loss\u obj=tf.keras.loss.sparsecategoric

我使用以下代码构建模型(tensorflow==1.14):

类模型(tf.keras.Model):
定义初始化(自):
超级(模型,自我)。\uuuu初始化
self.embedding=tf.keras.layers.embedding(10,5)
self.rnn=tf.keras.layers.GRU(100)#GRU和LSTM都不起作用
自最终_层=tf.keras.layers.致密(10)
self.loss\u obj=tf.keras.loss.sparsecategoricalcross熵(from\u logits=True,reduce='none')
def呼叫(自我,inp):
inp_em=自嵌入(inp)#(批量大小,顺序,嵌入大小)
inp_enc=self.rnn(inp_em)#(批量大小,隐藏大小)
logits=self.final_layer(inp_enc)#(批量大小,类数)
返回登录
模型=模型()
inp=np.random.randint(0,10[5,50],dtype=np.int32)
out=np.random.randint(0,10[5],dtype=np.int32)
使用tf.GradientTape()作为磁带:
logits=模型(inp)
损耗=模型损耗\u对象(out,logits)
打印(丢失)
梯度=磁带梯度(tf.减少平均值(损失),模型.可训练变量)
打印('================可训练变量==============')
对于模型中的v.trainable_变量:
印刷品(五)
打印('===============================')
对于梯度中的g:
印刷品(g)
但当我打印Grident时,输出是:

Tensor(“分类交叉熵/加权损失/Mul:0”,shape=(5,),dtype=float32)
=============可训练变量==========
=============渐变==========
没有一个
没有一个
没有一个
没有一个
张量(“MatMul:0”,shape=(100,10),dtype=float32)
张量(“biaaddgrad:0”,shape=(10,),dtype=float32)
最后一层的Grident运行良好,但GRU层的Grident不工作,等等

我已经尝试了
tf.keras.layers.LSTM
tf.keras.layers.GRU
,同样的问题也存在

更新 最后,我将
tf.GradientTape().gradient()
替换为
tf.graidents()

logits=model(inp)
损耗=模型损耗\u对象(out,logits)
梯度=tf.梯度(tf.减少平均值(损失),模型可训练变量)

渐变效果很好。但是我仍然不知道这两种工具之间有什么区别。

我想我需要用磁带观察一些张量。watch()。但我不知道它在哪里,也不知道怎么做。也许会有帮助?