网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
09月03日漏签0天
tensorflow吧 关注:4,242贴子:12,906
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 7回复贴,共1页
<<返回tensorflow吧
>0< 加载中...

请教大神,使用梯度带GradientTape ,loss不变怎么办(tf 2.x)

  • 只看楼主
  • 收藏

  • 回复
  • mon-key
  • 初级粉丝
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
用梯度带进行训练,loss一直在0.68左右浮动,用.fit()方法就下降很快
数据集是用的imdb
fit方法训练结果:
Epoch 10/10
20/20 [==============================] - 0s 3ms/sample - loss: 0.2161 - accuracy: 0.9500 - val_loss: 1.1142 - val_accuracy: 0.6000
梯度带GradientTape训练结果:
steps: 480, losses: 0.693433
val loss 0.69323194
steps: 490, losses: 0.693890
val loss 0.69317454
训练模型:
def lstm():
input = keras.Input(shape=(128,))
embeding = keras.layers.Embedding(vocab_size, 128)(input)
lstm1 = keras.layers.LSTM(128, return_sequences=True)(embeding)
dropout = keras.layers.Dropout(0.3)(lstm1)
lstm2 = keras.layers.LSTM(128)(dropout)
output = keras.layers.Dense(1, activation='sigmoid')(lstm2)
model = keras.Model(input, output)
return model
梯度带:
ll = lstm()
optimizor = tf.keras.optimizers.Adam()
#ll.compile(optimizer='Adam', loss=tf.losses.binary_crossentropy, metrics=['accuracy'])
for i in range(10):#训练次数
print(i)
for step in range(int(vocab_size/batch_size)):#取词
task1_data = next_batch(x1_train, step, batch_size)
task2_data = next_batch(x2_train, step, batch_size)
task1_labels = next_batch(y1_train, step, batch_size)
task2_labels = next_batch(y2_train, step, batch_size)
#fit()方法
# history = ll.fit(task1_data,task1_labels, epochs=10, batch_size=20, validation_data=(task2_data,task2_labels), verbose=1)
# results = ll.evaluate(test_data, test_labels)
# print(results)
#梯度带
with tf.GradientTape() as tape:
out = ll(task1_data
loss = tf.reduce_mean(tf.keras.losses.binary_crossentropy(task1_labels, out))
grad = tape.gradient(loss, ll.variables)
optimizor.apply_gradients(zip(grad, ll.variables))
y_pred = ll(task2_data)
val_loss = tf.reduce_mean(tf.keras.losses.binary_crossentropy(task2_labels, y_pred))
if step % 10 == 0:
print ('steps: %d, losses: %f' %(step, loss.numpy()))
print('val loss', val_loss.numpy())
求教问题出在哪里了


  • mon-key
  • 初级粉丝
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
绑定的优化器和损失函数是一样的,不知道为什么不变,用注释掉的方法验证了数据集没问题


2026-09-03 06:36:23
广告
不感兴趣
开通SVIP免广告
  • SSKOOOOL
  • 高级粉丝
    3
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
楼主解决了嘛,我也遇到类似的问题


  • zb243546368
  • 初级粉丝
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
我也是,就是一个mlp回归二次曲线都不行,结果完全不对。fit就没问题。


  • 贴吧用户_7bb9E5a
  • 初级粉丝
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
一样的问题,这个真的很坑


  • 所觅丹cE
  • 初级粉丝
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
tf.gradientTape()在循环中只能被使用一次,可以用persistent=True保证梯度函可以持续调用


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 7回复贴,共1页
<<返回tensorflow吧
分享到:
©2026 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示