TF.KERASは、断続的なRESNET50で下位層を交換します -- tensorflow フィールド と keras フィールド と tensorflow2.0 フィールド と tf.keras フィールド 関連 問題

tf.keras replace lower layer in pretrained resnet50












2
vote

問題

日本語

TF.KERAS.Applicationsの断続的なRESNet50モデルの最下層を取り外し/交換することは可能ですか?

例えば、これをやってみました:

<事前> <コード> import tensorflow as tf pretrained_resnet = tf.keras.applications.ResNet50(include_top=False, weights='imagenet') inputs = tf.keras.Input(shape=(256,256,1)) x = tf.keras.layers.ZeroPadding2D()(inputs) x = tf.keras.layers.Conv2D(filters=64, kernel_size=(7,7), strides=(2,2), padding='same')(x) outputs = pretrained_resnet.layers[3](x) test = tf.keras.Model(inputs, pretrained_resnet.output)

しかし、このエラーを与えます:ValueError:Graphが切断されました:テンソルテンソルの値を取得できません( "input_2:0"、.......

TF.KERASシーケンシャルAPIを使用してみましたが、RESNETはシーケンシャルモデルではないため、機能しません。私は基本的にはResnet50の最初のCONV2D層を新しいものと交換しようとしています。これは可能ですか?または、RESNETモデル全体を書き換える必要がありますか?

提案は大きく感謝されるでしょう!

英語

Is it possible to remove/replace the BOTTOM layers of a pretrained ResNet50 model in tf.keras.applications?

For instance, I've tried doing this:

import tensorflow as tf pretrained_resnet = tf.keras.applications.ResNet50(include_top=False, weights='imagenet') inputs = tf.keras.Input(shape=(256,256,1)) x = tf.keras.layers.ZeroPadding2D()(inputs) x = tf.keras.layers.Conv2D(filters=64,                            kernel_size=(7,7),                            strides=(2,2),                            padding='same')(x) outputs = pretrained_resnet.layers[3](x) test = tf.keras.Model(inputs, pretrained_resnet.output) 

But it gives this error: ValueError: Graph disconnected: cannot obtain value for tensor Tensor("input_2:0", .......

I've also tried using the tf.keras Sequential API, but that doesn't work since ResNet isn't a sequential model. I'm basically just trying to replace the first Conv2D layer in ResNet50 with a new one. Is this possible? Or do I have to rewrite the entire ResNet model?

Any suggestions would be greatly appreciated!

</div
           

回答リスト

2
 
vote
vote
ベストアンサー
 

<コード> ZeroPadding2D "commands": { "scroll" : { "suggested_key": { "default": "Ctrl+Space" }, "description": "Scroll Function" } } 0 は<コード> 998877613 <コード> "commands": { "scroll" : { "suggested_key": { "default": "Ctrl+Space" }, "description": "Scroll Function" } } 2 ネットワークの<コード> 998877612 レイヤーです。 。

したがって、 "commands": { "scroll" : { "suggested_key": { "default": "Ctrl+Space" }, "description": "Scroll Function" } } 4 に最初のレイヤ(すなわち入力レイヤ)のみを置き換えるためにここに表示されています。 <事前> <コード> "commands": { "scroll" : { "suggested_key": { "default": "Ctrl+Space" }, "description": "Scroll Function" } } 5

ネットワークから最初のレイヤを削除するには、以下のようにコードを実行できます。 <事前> <コード> cudaErrorAssert16

cudaErrorAssert17 は、<コード> cudaErrorAssert19 の代わりに 998877618 として入力レイヤーの形状を追加します。

新しい入力レイヤを追加するには、以下のようにコードを実行できます。 <事前> <コード> manifest.json0

出力:

<事前> <コード> manifest.json1

 

ZeroPadding2D and Conv2D (7*7, 64, stride 2) are the 2nd and 3rd layers of Resnet50 network.

Hence, showing here to replace only first layer (i.e input layer) in Resnet50

from tensorflow.keras.applications import ResNet50 import tensorflow as tf  model = ResNet50(include_top = False, weights = 'imagenet') model.save('model.h5')  res50_model = tf.keras.models.load_model('model.h5') #res50_model.summary() 

To remove first layer from network, you can run code as below

 res50_model._layers.pop(0) 

Resnet50 expects the input must have 3 channels, hence adding input layer shape as (256,256,3) instead of (256,256,1).

To add new input layer, you can run code as below

newInput = tf.keras.Input(shape=(256,256,3)) newOutputs = res50_model(newInput) newModel = tf.keras.Model(newInput, newOutputs) newModel.summary() 

Output:

Model: "model" _________________________________________________________________ Layer (type)                 Output Shape              Param #    ================================================================= input_2 (InputLayer)         [(None, 256, 256, 3)]     0          _________________________________________________________________ resnet50 (Model)             multiple                  23587712   ================================================================= Total params: 23,587,712 Trainable params: 23,534,592 Non-trainable params: 53,120 _________________________________________________________________ 
</div
 
 

関連する質問

0  ケースの類似の頭を作成します  ( Create analogous head in keras ) 
転送学習を使用してFast AIにCNNを作成すると、このようなヘッドが作成されます。 <事前> <コード> (1): Sequential( (0): AdaptiveConcatPool2d( (ap): AdaptiveAvgPool...

1  RESNetモデルに連続したバッチノルマル化層があるのはなぜですか?  ( Why does resnet models have consecutive batchnormalization layers ) 
私はRESNETアーキテクチャを経験していましたが、RESNETモデルは一定の間隔の後に連続したバッチノーム層の対を持つ傾向があることがわかりました。それ以来、特定の理由がないことがわかりません。 - BNレイヤはレイヤ起動を正規化し、パラメータ Be...

0  TensorflowでUNETを実装します  ( Implement unet in tensorflow ) 
私は、Keras APIを使用してTensorflow 2の画像セグメンテーションのために、Tensorflow 2の画像セグメンテーションのために、 Unet を実装しようとしていますが、コンカテネートレイヤの実装方法はわかりません。これが私が試したものです...

1  NVIDIA v100のTensorrt FP16またはINT8でスピードアップ  ( No speed up with tensorrt fp16 or int8 on nvidia v100 ) 
TRT.CREATE_INENCE_GRAPHを使用して、FP32からFP16およびINT8にMY KERAS変換されたTensorFlow保存モデルを変換してから、TensorFlow Servingに使用できる形式で保存します。ここでのコード - h...

0  AttributeError:Module 'TensorFlow'には、Keras Tensorflowに属性 'Python'がありません  ( Attributeerror module tensorflow has no attribute python in keras tensorflo ) 
システム情報: KERAS 2.3.1 PIP 20.2.2 Python 3.6.10 Tensorflow 2.3.0 Keras Tensorflowバックエンドのシャムアルゴリズムに取り組んでいます。私は追跡としてKerasバック...

1  ValueError:FIT_GENERATORを使用している間、発電機の出力はタプル `(x、y、sample_weight)または`(x、y) `でなければなりません  ( Valueerror output of generator should be a tuple x y sample weight or x ) 
私は一連のトレーニング画像と検証画像を使ってモデルを教えてきました、そして私はタイトルエラーを得ることがあります(私は下記の完全なものを投稿します)。 このトピックについて尋ねられた前回の質問は、結果を求められていませんでした。 私のコードスニペットは:です ...

0  Tensorflowカスタムレイヤーエラー - 変数には勾配が存在しません  ( Tensorflow custom layer error gradients do not exist for variables ) 
このリンクにあるチュートリアルES-RNNコードを実行しようとしています。 キャスティング用TIMESSERIES 必要なパッケージをインストールしたCONDA環境でこれを実行するとき(TensorFlow = 1.12.0、Keras == 2.2.4など...

0  attriptionError:モジュール 'TensorFlow.Python.keras'には属性 'ABS'がありません  ( Attributeerror module tensorflow python keras has no attribute abs ) 
私は複数のクラスで画像分類問題に取り組んでいて、私はシャムの顔認識サンプルこちら。処理データを.NPY形式で保存し、Siameseモデルで Lambda を使用しました。 <コード> <lambda> :にエラーが表示されます。 <事前> <コード> dist...

2  KerasClassifierの検証の使用方法とSCITKitを使用してGridSearchCVを参照する方法  ( How to use kerasclassifier validation split and using scitkit learn gridsearchcv ) 
私はいくつかのhyperパラメータをテストしようとしたいのですが、それはそれがそれをする方法のようです。 しかし、私は検証分割も使用したいです。初期のSOPLINGまたは/およびReducElronPlateauのようなコールバックを使用する。だから私の質問は...

2  ケースを直接またはTensorflowで輸入する?どちらかをアンインストールする必要がありますか?  ( Import keras directly or through tensorflow should i uninstall either one ) 
私は最初のケラシの輸入が direct のようなインターネットから取得されたいくつかの作業Python3源を持っています: <事前> <コード> from keras.models import Sequential from keras.layers i...




© 2022 cndgn.com All Rights Reserved. Q&Aハウス 全著作権所有