首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么tape.gradient在我的顺序模型中没有返回所有的值?

为什么tape.gradient在我的顺序模型中没有返回所有的值?
EN

Stack Overflow用户
提问于 2020-07-14 09:13:34
回答 1查看 1.2K关注 0票数 0

我必须计算这个模型的梯度:

代码语言:javascript
复制
model=Sequential()
model.add(Dense(40, activation='relu',input_dim=12))
model.add(Dense(60, activation='relu'))
model.add(Dense(units=3, activation='softmax'))
opt=tf.keras.optimizers.Adam(lr=0.001)
model.compile(loss="mse", optimizer=opt)

model_q=Sequential()
model_q.add(Dense(40, activation='relu',input_dim=15))
model_q.add(Dense(60, activation='relu'))
model_q.add(Dense(units=1, activation='linear'))
opt=tf.keras.optimizers.Adam(lr=0.001)
model_q.compile(loss="mse", optimizer=opt)

x=np.random.random(12)
x2=model.predict(x.reshape(-1,12))
with tf.GradientTape() as tape:
            value = model_q([tf.convert_to_tensor(np.append(x,x2).reshape(-1,15))])
            loss = -tf.reduce_mean(value)
grad = tape.gradient(loss, model.trainable_variables)
opt.apply_gradients(zip(grad, model.trainable_variables))

但是grad返回所有的none,因此opt不能将梯度应用到模型中。为什么会发生这种情况?我知道这是个很奇怪的损失,但我想计算一下

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-15 07:13:30

你的model没有被录音。如果你想要得到梯度,你必须把计算放到磁带的上下文中。

代码语言:javascript
复制
model=Sequential()
model.add(Dense(40, activation='relu',input_dim=12))
model.add(Dense(60, activation='relu'))
model.add(Dense(units=3, activation='softmax'))
opt=tf.keras.optimizers.Adam(lr=0.001)

model_q=Sequential()
model_q.add(Dense(40, activation='relu',input_dim=15))
model_q.add(Dense(60, activation='relu'))
model_q.add(Dense(units=1, activation='linear'))
opt=tf.keras.optimizers.Adam(lr=0.001)

x=np.random.random(12).reshape(-1,12)
with tf.GradientTape() as tape:
  x2 = model([x])
  value = model_q([tf.concat((x,x2), -1)])
  loss = -tf.reduce_mean(value)
grad = tape.gradient(loss, model.trainable_variables)
opt.apply_gradients(zip(grad, model.trainable_variables))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62891760

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档