亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我們如何創建一個可重用的塊,在單個模型中共享架構,但在 Keras 的單個模型中學習不同的權重集?

我們如何創建一個可重用的塊,在單個模型中共享架構,但在 Keras 的單個模型中學習不同的權重集?

明月笑刀無情 2023-12-08 17:11:07
我正在使用tensorflow.keras,想知道是否可以創建內置Keras層的可重用塊。例如,我想在模型中的不同位置重復使用同一組層(能夠學習不同的權重)。我想在我的模型中的不同時間使用以下塊。keep_prob_=0.5input_features=Input(shape=(29, 1664))Imortant_features= SelfAttention(activation='tanh',      kernel_regularizer=tf.keras.regularizers.l2(0.), kernel_initializer='glorot_uniform'      (input_features)drop3=tf.keras.layers.Dropout(keep_prob_)(Imortant_features)Layer_norm_feat=tf.keras.layers.Add()([input_features, drop3])Layer_norm=tf.keras.layers.LayerNormalization(axis=-1)(Layer_norm_feat)ff_out=tf.keras.layers.Dense(Layer_norm.shape[2], activation='relu')(Layer_norm)ff_out=tf.keras.layers.Dense(Layer_norm.shape[2])(ff_out)drop4=tf.keras.layers.Dropout(keep_prob_)(ff_out)Layer_norm_input=tf.keras.layers.Add()([Layer_norm, drop4])Attention_block_out=tf.keras.layers.LayerNormalization(axis=-1)(Layer_norm_input)intraEpoch_att_block=tf.keras.Model(inputs=input_features, outputs=Attention_block_out)我已經閱讀過有關在 Keras 中創建自定義層的內容,但我發現文檔不夠清晰。我想重用該子模型,它能夠在 tensorflow.keras 中的單個功能 API 模型中學習不同的權重集。
查看完整描述

1 回答

?
一只名叫tom的貓

TA貢獻1906條經驗 獲得超3個贊

使用此代碼(我刪除了 SelfAttention,所以將其添加回來):


import tensorflow as tf


class my_model(tf.keras.layers.Layer):

  def __init__(self):

    super(my_model, self).__init__()


    keep_prob_=0.5

    input_features=tf.keras.layers.Input(shape=(29, 1664))

    drop3=tf.keras.layers.Dropout(keep_prob_)(input_features)

    Layer_norm_feat=tf.keras.layers.Add()([input_features, drop3])

    Layer_norm=tf.keras.layers.LayerNormalization(axis=-1)(Layer_norm_feat)

    ff_out=tf.keras.layers.Dense(Layer_norm.shape[2], activation='relu')(Layer_norm)

    ff_out=tf.keras.layers.Dense(Layer_norm.shape[2])(ff_out)

    drop4=tf.keras.layers.Dropout(keep_prob_)(ff_out)

    Layer_norm_input=tf.keras.layers.Add()([Layer_norm, drop4])

    Attention_block_out=tf.keras.layers.LayerNormalization(axis=-1)(Layer_norm_input)

    self.intraEpoch_att_block=tf.keras.Model(inputs=input_features, outputs=Attention_block_out)

    

  def call(self, inp, training=False):

    x = self.intraEpoch_att_block(inp)

    return x


model1 = my_model()

model2 = my_model()


查看完整回答
反對 回復 2023-12-08
  • 1 回答
  • 0 關注
  • 136 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號