Tensorflow 2.x로 만든 모델의 중간 출력값들을 Numpy array로 변환하는 방법
1258
작성한 질문수 77
안녕하세요! 공부를 하다가 중간에 궁금한 점이 생겨 질문드립니다! Tensorflow 2.x 버전으로 만든 모델을 학습(fit) 시킨 후에 중간 레이어들의 출력값들을 관찰하고 싶은데요! 그래서 tf.Tensor 에서 Numpy array 로 변환시켜서 보려고 했는데, 어려움이 생겨 질문드립니다. 우선 아래 코드를 보시면 하나는 그냥 tf.Constants 로 정의한 텐서이고 나머지 하나는 모델의 중간 레이어 출력값의 텐서입니다.
그런데 두 개 중 tf.Constants 로 정의한 텐서는 numpy() 메소드를 활용해서 넘파이 배열로 변환이 가능한데, 모델의 중간 출력값 텐서는 numpy() 메소드가 존재하지 않더라구요.. 그래서 두 개의 타입을 비교해보니 아래 처럼 서로 다른 클래스 이더라구요..
아래 그림을 보시면 아시겠지만 tf.Constants로 정의한 텐서는 tensorflow.python.framework.ops.EagerTensor 라는 클래스인 반면, 모델 중간 레이어의 출력값 텐서 클래스는 tensorflow.python.framework.ops.Tensor 입니다.
구글링을 해보니 비슷한 문제를 겪은 질문들이 있었지만 명쾌한 해결책을 찾을 수는 없었습니다..
혹시 tensorflow.python.framework.ops.Tensor 클래스를 갖는 텐서를 넘파이로 변환하는 방법을 아시는지 문의드립니다!

답변 1
1
안녕하십니까,
Eager 모드가 아니면 numpy로 변환되지 않습니다. Graph 모드에서 사용되는 Tensor는 실행중에 numpy로 변환 될 수 없습니다.
학습이 완료된 model이 있으면 해당 모델에서 layer를 찾고 해당 layer의 weight를 볼수는 있습니다.
가령 아래와 같이 모델을 만들고 학습이 완료 되었다면
model = tf.keras.Sequential([
input_layer,
hidden_layer,
output_layer
])
이들중 hidden_layer의 weight값을 보고 싶다면 hidden_layer.get_weights()[0]
감사합니다.
0
답변 감사합니다! 그래서 조금 더 찾아 보았더니.. 중간 결과값들을 일일이 확인하려면 확인하려는 중간 레이어를 임시로 output 에 놓고 하면서 일종의 '트릭(?)'을 이용할 수는 있다고 하네요..
resize 질문
0
60
1
20251212 Kaggle 런타임에 scikit-learn 설치 실패 트러블 슈팅
0
87
1
Loss와 매트릭 관계
0
78
2
Boston 코랩 실습
0
173
2
배치 정규화의 이해와 적용 2 강의 질문
0
145
2
Augmentation원본에 적용해서 데이터 갯수 자체를 늘리는 행위는 의미가있나요?
0
153
2
Conv함수 안에 activation 을 넣지 않는 이유가 뭔지 궁금합니다.
0
214
2
소프트맥스 관련 질문입니다
0
215
1
강의 관련 질문입니다
0
162
2
residual block과 identity block의 차이
0
203
2
옵티마이저와 경사하강법의 차이가 궁금합니다.
1
253
1
실습 환경
0
173
2
입력 이미지 크기
0
259
2
데이터 증강
0
209
2
albumentations ShiftScaleRotate
0
212
1
Model Input Size 관련
0
296
1
마지막에 bird -> frog 말고도 deer -> frog 도 잘못된것 아닌가요??
0
207
1
일반적인 질문 (kaggle notebook사용)
0
278
2
실무에서 Augmentation 적용 시
0
349
2
안녕하세요 교수님
0
237
1
가중치 초기화(Weight Initialization) 질문입니다.
0
333
1
테스트 데이터셋 predict의 'NoneType' object has no attribute 'shape' 오류
0
414
1
학습이 이상하게 됩니다.
2
1043
2
boston import가 안됩니다
0
233
1





