Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.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 Keras在tf.math.pow中学习指数_Python_Tensorflow_Keras - Fatal编程技术网

Python Tensorflow Keras在tf.math.pow中学习指数

Python Tensorflow Keras在tf.math.pow中学习指数,python,tensorflow,keras,Python,Tensorflow,Keras,我试图创建一个层来学习幂函数的指数。我的Keras层如下所示: class-density\u电源(层): 定义初始(自我,**kwargs): 超级(高密度、自功率)。\uuuuu初始值(**kwargs) def构建(自我,输入_形状): self.kernel=self.add_weight('kernel', 形状=(输入形状[1],), initializer=tf.keras.initializers.glorot_uniform(), 可培训=真实) #为该层创建可训练重量变量。

我试图创建一个层来学习幂函数的指数。我的Keras层如下所示:

class-density\u电源(层):
定义初始(自我,**kwargs):
超级(高密度、自功率)。\uuuuu初始值(**kwargs)
def构建(自我,输入_形状):
self.kernel=self.add_weight('kernel',
形状=(输入形状[1],),
initializer=tf.keras.initializers.glorot_uniform(),
可培训=真实)
#为该层创建可训练重量变量。
自功率=自加重量(“功率”,
形状=(输入形状[1],),
initializer=tf.keras.initializers.glorot_uniform(),
可培训=真实)
超级(密集的力量,自我)。构建(输入形状)#最后一定要调用这个
def呼叫(自我,x):
power_val=tf.math.pow(x,self.power)
dot\u prod=tf.linalg.matmul(power\u val,self.kernel)
返回点
def计算输出形状(自身、输入形状):
返回(输入形状[0],输入形状[1])
然而,当我尝试训练网络时,我的损失是很小的。为什么会这样? 我的模型是

inp=Input(shape=(1,))
x=密集功率(1)(inp)
模型=模型(inp,x)
model.compile(优化器='rmsprop',
损失='mse')
x_序列=np.随机均匀(-10010020000000)
y_列车=9.82*x_列车**2
型号.配合(x\U系列、y\U系列、批量大小=1024)
起初,我认为Tensorflow无法将梯度传播到tf.math.pow的指数,但是我使用

使用tf.GradientTape()作为磁带:
x=tf.变量(2.0)
功率=tf.变量(3.0)
x_pow=tf.math.pow(x,pow)
损耗=tf.减少平均值(x_功率**2)
梯度=磁带梯度(损耗,[x,功率])
打印(渐变)
[, ]
这是不是Keras不传播梯度的问题