新しいテンソルフロー2を使用して、テキスト検出用の次のネットワークフットを実装しようとしています。作成者はネットワークのバックボーンとしてresnetを使用しているため、最初に考えたのは、事前トレーニングされたネットワークの読み込みにtensoflowハブresnetを使用することでした。しかし、問題は、tfhubからロードされたモジュールの概要を印刷する方法が見つからないことです。
ロードされたモジュールのレイヤーをtf-hubから確認する方法はありますか?ありがとう
更新
残念ながら、resnetはtf2-hubで利用できないため、少なくともハブimplが存在するまでは、resentの組み込みのkeras実装を使用することにしました。それの。
tf2.keras.applicationsを使用してresnetの中間レイヤーを取得する方法は次のとおりです。
import numpy as np
import tensorflow as tf
from tensorflow import keras
layers_out = ["activation_9", "activation_21", "activation_39", "activation_48"]
imgs = np.random.randn(2, 640, 640, 3).astype(np.float32)
model = keras.applications.resnet50.ResNet50(input_shape=(640, 640, 3), include_top=False)
intermid_outputs= [model.get_layer(layer_name).output for layer_name in layers_out]
shared_conds = keras.Model(inputs=model.input, outputs=intermid_outputs)
Y = conv_shared(imgs)
shapes = [y.shape for y in Y]
print(shapes)
次のようなことを行って、中間出力を調べることができます。
resnet = hub.Module("https://tfhub.dev/google/imagenet/resnet_v2_50/feature_vector/3")
outputs = resnet(np.random.rand(1,224,224,3), signature="image_feature_vector", as_dict=True)
for intermediate_output in outputs.keys():
print(intermediate_output)
次に、ハブモジュールの中間層をグラフの残りの部分にリンクする場合は、次の操作を実行できます。
resnet = hub.Module("https://tfhub.dev/google/imagenet/resnet_v2_50/feature_vector/3")
features = resnet(images, signature="image_feature_vector", as_dict=True)["resnet_v2_50/block4"]
flatten = tf.reshape(features, (-1, features.shape[3]))
ResNetの最後のブロックから機能を抽出したいとします。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加