【发布时间】:2020-10-31 04:28:42
【问题描述】:
如果我对层的了解是正确的,那么 Layers 使用 tf.Variable 作为权重变量,所以如果 Dense() 层中有 3 个单位,这意味着它对单个实例使用类似 w = tf.Variable([0.2,5,0.9]) 的东西,并且如果input_shape 是 2,那么变量会类似于w = tf.Variable([[0.2,5,0.9],[2,3,0.4]])?
如果我错了,请纠正我。
我正在学习非常深入的 tensorflow 基础知识,并找到了我修改为的代码
weight = tf.Variable([3.2])
def get_lost_loss(w):
'''
A very hypothetical function since the name
'''
return (w**1.3)/3.1 # just felt like doing it
def calculate_gradient(w):
with tf.GradientTape() as tape:
loss = get_lost_loss(w) # calculate loss WITHIN tf.GradientTape()
grad = tape.gradient(loss,w) # gradient of loss wrt. w
return grad
# train and apply the things here
opt = tf.keras.optimizers.Adam(lr=0.01)
losses = []
for i in range(50):
grad = calculate_gradient(weight)
opt.apply_gradients(zip([grad],[weight]))
losses.append(get_lost_loss(weight))
谁能告诉我tf.GradientTape()内部发生的事情的直觉。另外我最想问的是如果我必须为形状是[2,3]而不是weight的weight1和weight2做这件事,应该对代码进行什么修改强>
请做出任何假设。你们在这方面比我熟练得多。
【问题讨论】:
标签: tensorflow keras deep-learning neural-network tensorflow2.0