728x90
Tensorflow는 현존하는 머신러닝 프레임워크 중 가장 유명한 프레임 워크이다.

필자가 딥러닝을 배우기시작하면서 선택한 프레임워크인데 생각보다 어렵지는 않다.


그러나 필자가 블로그에 포스팅 하는 부분들 중에서는 거의 해본적없는 분야이고

빨리 빨리 바뀌기에 이 포스터는 항상 맞을수 없다고 볼 수 있다.

그러기 때문에 읽는 입장에서 그 부분을 고려해서 읽길 바란다.


이 포스터는 Python3.6으로 Tensorflow1.2로 테스팅 했으며 작업환경은 PyCharm이며 특별한 경우가 아니면 쉘에서 실행하지 않음.


프로그래밍에서 name scope라는 것은 사실 컴퓨터 입장에서는 없어도 되는 부분이긴 하다.

그러나 사람입장에서는 되게 중요한데 namescope는 논리적으로 어디까지가 우리가 원하는 부분인지를 나눌 수 있기 때문이다.


복잡하면 복잡할수록 name scope로 쪼개는게 좋다. 나중에 엄청 커졌을 경우를 생각해보자,

만약 name scope라는 논리적 단위로 쪼개놓지 않는다면 더 이해하기는 힘들 것이다.

그러면 이제 name scope를 사용해서 논리적으로 쪼갠 예제를 보자.


Name Scope 만들기



import tensorflow as tf

with tf.name_scope('scope_alpha'):
a = tf.constant(5, dtype=tf.int32, name='const_a')
b = tf.constant(10, dtype=tf.int32, name='const_b')
c = tf.add(a, b, name='add_c')

with tf.name_scope('scope_beta'):
d = tf.constant(500, dtype=tf.int32, name='const_a')
e = tf.constant(1000, dtype=tf.int32, name='const_b')
f = tf.add(d, e, name='add_c')

output = tf.add(c, f)

sess = tf.Session()

writer = tf.summary.FileWriter('./mygraph', graph=tf.get_default_graph())

print(sess.run(output))


namescope를 만드는 코드는 아래와 같다.


with tensorflow.name_scope('Scope'):


이제 with구문안에 작성하면 이는 name_scope안에서 하는 행동으로 취급한다.

사실 name_scope안에서 하던 안하던 그건 크게 중요하지 않다.

name_scope안에서 선언한 변수도 밖에서 얼마든지 쓸수 있기 때문이다.

즉 name_scope는 순수하게 사람이 알아보기위해서 사용하는것이라고 생각하면된다.


그러면 이렇게 만들면 과연 시각화 하는데 어떻게 유리할까??

어짜피 코드단위인데 라고 생각한다면 TensorBoard를 켜보면된다.


Tensor Board를 사용하여 Name Scope를 확인하기


위 코드는 그래프를 만들었으므로 Tensorboard로 확인하도록 하자.

만약 텐서보드를 어떻게 보는지 기억이 안된다면 Tensorflow2장을 확인하자.


그러면 그래프를 확인하도록하자.


보면 이때까지와 달리 namescope에 넣은 부분은 namescope로 표현되어 더 알아보기 쉽게 표현됨을 알 수 있다.



이제 +누르면 내부를 상세하게 볼 수 있다.


이렇게 보면 내부를 알 수 있다.


내부가 복잡해질수록 반드시 namescope로 나누는게 사람이 이해하기에 도움이된다.


+ Recent posts