[python] tensorflow.keras 딥러닝 모델의 레이어 이름 얻기

프로그래밍/python|2020. 4. 20. 08:00| bskyvision 심교훈

딥러닝 모델에 딥(deep)이라는 이름이 붙는 이유는 여러 층으로 이루어진 구조를 갖기 때문입니다. 다양한 종류의 레이어를 여러 층 쌓아서 원하는 기능을 수행할 수 있도록 모델을 만드는 것이죠. 딥러닝 모델들은 점점 깊어지는 방향으로 발전했고, 일례로 ResNet과 같은 이미지 분류 CNN 모델은 152층의 아주 깊은 구조를 갖고 있습니다. 반면, 딥러닝 이전의 머신러닝 모델들은 일반적으로 얕은(shallow) 구조를 갖고 있었습니다. 대개는 층이라고 부를 만한 것이 없었죠. 

 

Shallow architecture -> Deep architecture 

 

많은 층의 레이어를 갖게 되면서 레이어들을 구별하기 위해, 연구자들은 각 레이어마다 이름을 붙여줍니다. 컨볼루션 레이어라면 conv1, conv2, conv3와 같이, fully-connected 레이어라면 fc1, fc2, fc3와 같이 말이죠. 그런데 만약 우리가 tensorflow.keras를 이용해서 딥러닝 모델을 만들면, 각 레이어의 이름이 임의로 생성됩니다. 종종 우리는 이 이름을 알아야 합니다. 이름을 알아야 불러줄 수 있기 때문입니다. 이때 우리에게 필요한 것은 단 한 줄의 코드입니다.  

 

1
layer_names = [layer.name for layer in model.layers]
cs

 

model 명을 model이 아니라 다른 것으로 해주셨다면 그것으로 바꿔서 사용하시면 됩니다.  

 

 

<참고자료>

[1] https://stackoverflow.com/questions/50283844/in-keras-how-to-get-the-layer-name-associated-with-a-model-object-contained-i, stackoverflow, "In Keras, how to get the layer name associated with a "Model" object contained in my model?"