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

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

通過 Keras 2.4.3 和 Tensorflow 2.2 從 SavedModel 中提取特征

通過 Keras 2.4.3 和 Tensorflow 2.2 從 SavedModel 中提取特征

qq_花開花謝_0 2023-06-20 14:03:09
我想從我的 CNN 模型的最后一個密集層中提取特征。但是,我與我所做的所有谷歌研究非常矛盾。Tensorflow 有很多不同的方法,我正在努力尋找一些有用的方法。我已經成功地在 CIFAR10 上訓練了一個模型。我已將模型保存到一個目錄并有一個 saved_model.pb 文件。我已經通過 tensorboard 可視化了模型,但不完全確定我的最后一層的名稱。可視化看起來有點混亂。我怎樣才能繼續提取這些特征?我想將它們用于 t-SNE 分析。我正在嘗試使用 gfile 加載 pb 圖,但不確定這是否是正確的方法。謝謝。import tensorflow.compat.v1 as tftf.disable_v2_behavior()from tensorflow.python.platform import gfilepb_graph_file = '../data/processed/saved_models/saved_model.pb'f = gfile.GFile(pb_graph_file, 'rb')graph_def = tf.GraphDef()f.close()我的 Keras Sequential 模型如下所示:    """    This is the CNN model's architecture    """    weight_decay = 1e-4    model = Sequential()    model.add(Conv2D(32, (3, 3), activation = 'relu', kernel_initializer = 'he_normal', kernel_regularizer = l2(weight_decay), padding = 'same', input_shape = (32, 32, 3)))    model.add(BatchNormalization())    model.add(Conv2D(32, (3, 3), activation = 'relu', kernel_initializer = 'he_normal', kernel_regularizer = l2(weight_decay), padding = 'same'))    model.add(BatchNormalization())    model.add(MaxPooling2D((2, 2)))    model.add(Dropout(0.2))    model.add(Conv2D(64, (3, 3), activation = 'relu', kernel_initializer = 'he_normal', kernel_regularizer = l2(weight_decay), padding='same'))    model.add(BatchNormalization())    model.add(Conv2D(64, (3, 3), activation = 'relu', kernel_initializer = 'he_normal', kernel_regularizer = l2(weight_decay), padding='same'))    model.add(BatchNormalization())    model.add(MaxPooling2D((2, 2)))    model.add(Dropout(0.3))    model.add(Conv2D(128, (3, 3), activation = 'relu', kernel_initializer = 'he_normal', kernel_regularizer = l2(weight_decay), padding='same'))    model.add(BatchNormalization())    model.add(Conv2D(128, (3, 3), activation = 'relu', kernel_initializer = 'he_normal', kernel_regularizer = l2(weight_decay), padding='same'))    model.add(BatchNormalization())    model.add(MaxPooling2D((2, 2)))    model.add(Dropout(0.4))
查看完整描述

1 回答

?
DIEA

TA貢獻1820條經驗 獲得超2個贊

首先使用model.summary()獲取所需層的名稱。

然后在下面給定的代碼中使用該層的名稱代替 desired_layer :

from keras.models import Model
extractor = Model(inputs=model.inputs, outputs=model.get_layer(desired_layer).output)
features = extractor.predict(x)

這里x是您要從中提取特征的數據。


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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