*2.0에서 달라지는 부분이 매우 많으므로 다시 한 번 훑어보면서 쓰는 건지 안 쓰는 건지 확인해야 함!!

tf.floor(x)

  • x의 요소별로 그 요소보다 크지 않은 정수 반환

@tf.function

  • 함수를 호출가능한 tensorflow graph 객체로 컴파일하는 데코레이터

tf.GradientTape

 

tf.name_scope

  • 편의함수 정의할 때 사용하는 것을 봤다.
  • 텐서, 변수, 플레이스홀터 등 이러한 변수를 관리하기 위한 간단한 범위 지정 메커니즘을 제공
  • 텐서보드에서 시각화할 때 유용, 자동으로 그래프 원소들이 그룹화됨

 

tf.device

with tf.device('/gpu:0'):
  ...
  • with문으로 작성하여 수동으로 디바이스 배치하기 → 해당 컨텍스트 내 모든 작업이 동일한 장치로 할당된다.
  • “/cpu:0” : 서버의 CPU를 지정함
  • “/gpu:0” : 서버의 첫번째 GPU를 지정함
  • “/gpu:1” : 서버의 두번째 GPU를 지정함. 유사한 방식으로 계속 지정.

 

tf.get_default_graph() (더이상 사용하지 않음)

self.scope = tf.get_default_graph().unique_name(self.name.replace('/', '_'), mark_as_used=False)
  • tensorflow 모듈을 import하면 내부적으로 디폴트 그래프가 생성되는데, 현재 스레드의 디폴트 그래프를 반환
  • unique_name : 전에 이미 사용된 이름이라면 unique하게 만들어줌
    • mark_as_used : 사용되는 이름인지 표시

 

tf.variable_scope

tf.get_variable()에 전달된 이름의 네임스페이스를 관리

 

tf.get_variable vs. tf.Variable

  • Variable : 언제나 새로운 객체를 생성하며, 같은 이름의 객체가 이미 있으면 _1, _2 붙이는 식으로 생성
  • get_variable : 이 이름을 가진 객체가 존재하는지 검색하고, 없으면 넘겨받은 shapeinitializer로 새로 만든다

*tensorflow의 namespace https://eyeofneedle.tistory.com/17

 

tf.global_variables

  • 앞서 정의한 변수들을 가져옴

 

tf.group(*ops)

c = tf.group(a, b)

# 아래와 같다
with tf.control_dependencies([a, b]):
    c = tf.no_op()

 

tf.control_dependencies(control_inputs)

tf.no_op

  • 하는 거 없고 edge들 통제하는 placeholder로만 씀

tf의 initializer

  • tf.random_normal_initializer : 주어진 평균과 표준편차를 따르는 정규분포로부터 샘플링된 값을 가지는 tensor 생성

tf.clip_by_value(t, clip_value_min, clip_value_max)

  • 텐서 t의 요소값이 clip_value_min보다 작으면 clip_value_min으로 설정하고, clip_value_max보다 크면 clip_value_max으로 설정

tf.identity

  • 주어진 텐서와 동일한 내용물과 모양의 텐서를 생성

tf.cond(pred, true_fn, false_fn)

tf.concat([t1, t2], axis)

# (2, 3)
t1 = [[1, 2, 3], 
      [4, 5, 6]]
t2 = [[7,  8,  9], 
      [10, 11, 12]]

axis = 0 이면

# (4, 3)
[[1, 2, 3], 
 [4, 5, 6],
 [7, 8, 9], 
 [10, 11, 12]]

axis = 1 이면

# (2, 6)
[[1, 2, 3, 4, 5, 6],
 [7, 8, 9, 10, 11, 12]]

 

tf.cast(x, dtype)

  • tensor를 새로운 형태(두번째 인자인 dtype)로 캐스팅

tf.Tensor.set_shape vs. tf.reshape(x)

  • "tf.Tensor.set_shape() 메소드는 Tensor 오브젝트의 정적 쉐이프를 업데이트 한다. 그리고 전형적으로 쉐이프를 직접 추론할 수 없을 때 추가 쉐이프 정보를 제공하기 위해 사용한다. 이는 텐서의 동적 쉐이프를 변경하지 않는다.
  • tf.reshape() 오퍼레이션은 다른 동적 쉐이프의 새로운 텐서를 생성한다.”

tensorflow op (텐서플로우 오퍼레이션)

  • 텐서 객체를 계산하는 노드

tf.placeholder(dtype, shape=None, name=None)

  • 변수 값을 던져 줄 공간을 준비해놓기

'인공지능 > 머신러닝-딥러닝' 카테고리의 다른 글

파이토치(PyTorch) 이해하기 with MNIST  (0) 2022.11.24
텐서플로우(TensorFlow)에서 파이토치(PyTorch)로 환승하기  (1) 2022.11.24
ASAM (pending)  (0) 2022.08.10
Tensorflow  (0) 2022.08.10
01. numpy 기초  (0) 2021.05.02
복사했습니다!