Sequential
Kerasモデルのすべてのレイヤーのレイヤーサイズにアクセスしたいと思います。私のコード:
model = Sequential()
model.add(Conv2D(filters=32,
kernel_size=(3,3),
input_shape=(64,64,3)
))
model.add(MaxPooling2D(pool_size=(3,3), strides=(2,2)))
次に、次のようなコードを動作させたい
for layer in model.layers:
print(layer.get_shape())
..しかし、そうではありません。エラーが表示されます:AttributeError: 'Conv2D' object has no attribute 'get_shape'
Keras Layer の公式ドキュメントによると、layer.output_shape
またはlayer.input_shape
を介してレイヤーの出力/入力形状にアクセスできます。
from keras.models import Sequential
from keras.layers import Conv2D, MaxPool2D
model = Sequential(layers=[
Conv2D(32, (3, 3), input_shape=(64, 64, 3)),
MaxPool2D(pool_size=(3, 3), strides=(2, 2))
])
for layer in model.layers:
print(layer.output_shape)
# Output
# (None, 62, 62, 32)
# (None, 30, 30, 32)
出力を派手な方法で印刷したい場合:
model.summary()
アクセシブルなフォームでサイズが必要な場合
for layer in model.layers:
print(layer.get_output_at(0).get_shape().as_list())
おそらくこれよりも形状にアクセスするより良い方法があるでしょう。インスピレーションをくれたダニエルに感謝します。
model.summary()
を使用するだけで、すべてのレイヤーとその出力形状が印刷されます。
配列、タプルなどとして必要な場合は、次を試してください:
for l in model.layers:
print (l.output_shape)
最初のレイヤーの(なし、62、62、32)として提供されます。 None
はbatch_sizeに関連しており、トレーニングまたは予測中に定義されます。