第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何使用張量板檢測(cè)消失和爆炸梯度?

如何使用張量板檢測(cè)消失和爆炸梯度?

LEATH 2022-08-02 16:51:52
我有兩個(gè)“子問(wèn)題”1)我如何用Tensorboard檢測(cè)消失或爆炸梯度,因?yàn)槟壳案鶕?jù)“擬合#31173的未棄用write_grads”中已棄用?write_grads=TrueTensorboard callback2)我想我可以根據(jù)張量板中分布和直方圖選項(xiàng)卡中的權(quán)重分布和直方圖來(lái)判斷我的模型是否因梯度消失而受到影響。我的問(wèn)題是,我沒(méi)有可以比較的參照系。目前,我的偏見(jiàn)似乎是“移動(dòng)的”,但我無(wú)法判斷我的內(nèi)核權(quán)重(Conv2D層)是否“移動(dòng)”/“變化”“足夠”。有人可以通過(guò)給出一個(gè)經(jīng)驗(yàn)法則來(lái)幫助我在Tensorboard中直觀地評(píng)估這一點(diǎn)嗎?也就是說(shuō),如果只有內(nèi)核權(quán)重的底部25%百分位在移動(dòng),那就足夠好了/不夠好了嗎?或者,也許有人可以從張量板中發(fā)布兩個(gè)消失漸變與非消失漸變的參考圖像。以下是我的直方圖和分布,是否可以判斷我的模型是否遭受梯度消失的影響?(為簡(jiǎn)潔起見(jiàn),省略了一些圖層)提前致謝。
查看完整描述

1 回答

?
慕俠2389804

TA貢獻(xiàn)1719條經(jīng)驗(yàn) 獲得超6個(gè)贊

我目前正面臨同樣的問(wèn)題,并使用Tensorboard以類似的方式處理了這個(gè)問(wèn)題。


即使不推薦使用,您仍然可以通過(guò)子類化并在方法中手動(dòng)計(jì)算梯度來(lái)管理網(wǎng)絡(luò)每一層的梯度。write_gradstf.keras.Modelgradient.Tapetrain_step


與此類似的東西對(duì)我有用


from tensorflow.keras import Model


class TrainWithCustomLogsModel(Model):


    def __init__(self, **kwargs):

        super(TrainWithCustomLogsModel, self).__init__(**kwargs)

        self.step = tf.Variable(0, dtype=tf.int64,trainable=False)


    def train_step(self, data):


        # Get batch images and labels

        x, y = data

        

        # Compute the batch loss

        with tf.GradientTape() as tape:

            p = self(x , training = True)

            loss = self.compiled_loss(y, p, regularization_losses=self.losses)

        

        # Compute gradients for each weight of the network. Note trainable_vars and gradients are list of tensors

        trainable_vars = self.trainable_variables

        gradients = tape.gradient(loss, trainable_vars)


        # Log gradients in Tensorboard

        self.step.assign_add(tf.constant(1, dtype=tf.int64))

        #tf.print(self.step)

        with train_summary_writer.as_default():

          for var, grad in zip(trainable_vars, gradients):

            name = var.name

            var, grad = tf.squeeze(var), tf.squeeze(grad)

            tf.summary.histogram(name, var, step = self.step)

            tf.summary.histogram('Gradients_'+name, grad, step = self.step)

    

        # Update model's weights

        self.optimizer.apply_gradients(zip(gradients, trainable_vars))

        del tape

        # Update metrics (includes the metric that tracks the loss)

        self.compiled_metrics.update_state(y, p)

        # Return a dict mapping metric names to current value

        return {m.name: m.result() for m in self.metrics}

然后,您應(yīng)該能夠可視化訓(xùn)練中任何訓(xùn)練步驟的梯度分布,以及核值的分布。


此外,可能值得嘗試?yán)L制規(guī)范隨時(shí)間分布圖,而不是單個(gè)值。


查看完整回答
反對(duì) 回復(fù) 2022-08-02
  • 1 回答
  • 0 關(guān)注
  • 198 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)