텐서플로(TensorFlow)

Lala·2022년 7월 7일
0
post-thumbnail

텐서플로(TensorFlow)

  • 데이터 흐름 그래프(data flow graph)를 사용하여 데이터의 수치 연산을 하는 오픈 소스 소프트웨어 프레임워크
  • NumPy 같은 다양한 라이브러리를 묶어 놓은 패키지
  • 텐서플로는 머신러닝과 딥뉴럴 네트워크 연구 목적으로 구글 연구조직인 구글 브레인 팀이 개발했다.

  • 위 그림은 텐서플로에서 데이터의 수치 연산을 수행하기 위한 그래프이다.
  • 그래프 노드는 수학적 연산은


💜텐서플로 특징

  • 데스크톱, 서버 또는 모바일 디바이스에서 CPU나 GPU를 사용하여 연산을 구동할 수 있다.

  • 분산환경에서 실행 가능

  • 단순한 아이디어 테스트부터 서비스 단계까지 모두 이용 가능

  • GradientTape를 사용하여 자동으로 미분을 계산 가능
    -> 딥러닝 역전파 과정에서 오차를 최소화하고자 편미분을 이용해 가중치를 업데이트한다.
    ->미분 계산을 자동화 하는 것이 GradientTape이며, 아래와 같이 사용한다.

import tensorflow as tf
with tf.GradientTape() as tape:
	tape.watch(model.input)
    model_vals = model(v)

 

💚 텐서플로 장점

  • 구글에서 공식 배포했기 때문에 다양한 학습자료가 제공
  • 사용하기 편리. 텐서플로 2.x부터 데이터를 훈련하고 예측하는 과정이 매우 단순해졌다.
  • 코드 수정없이 CPU,GPU 모드로 동작할 수 잇다
  • C++애플리케이션에서 텐서플로 사용이 편리
  • 직관적이고 접근하기 쉬운 파이썬 인터페이스 제공.

 

✔️ 텐서플로 1. x와 2.x버전의 실행 과정 차이점

버전텐서플로 1.x텐서플로 2.x
차이점- 데이터를 이용해 훈련시키려면 그래프를 만들고
플레이스 홀더(placeholder)를 정의한 후 세션을
실행해야 한다.
즉, 세션 실행 시점에 입력 데이터셋을 플레이스 홀더에 넣고 처리하는 복잡한 과정이 필요.
즉시 실행이 기본 모드로 설정되어 있어
플레이스홀더 , 세션, 실행 등의 과정이
필요하지 않다.
즉, 모델을 사용하여 데이터를 훈련하고 예측하는 과정이 단순해짐.

❗코드비교
 
텐서플로 1.x

with tf.Session() as session:
	session.run(tf.tables_initializer())
	session.run(tf.tables_initializer())
	model.fit(X_train, y_train, validation_data =(X_valid, y_valid), epochs =10,batch_size=64)

 
텐서플로 2.x

model.fit(X_train, y_train, validation_data =(X_valid, y_valid), epochs=10, bacth_size=64)

 
 

🧡 텐서플로의 아키텍쳐

  • 준비된 데이터를 사용해 모델 생성
    -> 생성된 모델을 사용해 분류 및 예측으로 마무리 할 수도 있지만, tensorflow hub에 게시해 재사용할 수 있음
    -> 사용자에게 웹이나 모바일로 서비스를 배포할 수 있는 환경도 제공.

     

💙 데이터 준비

  • 데이터 호출에는 파이썬 라이브러리(pandas)를 이용하는 방법과 텐서플로를 이용하는 방법이 있다.

     

  • 데이터가 이미지일 경우 : 분산된 파일에서 데이터를 읽은 후 전처리를 하고 배치 단위로 분활하여 처리.

  • 데이터가 텍스트일 경우 : 임베딩 과정을 거쳐 서로 다른 길이의 시퀸스를 배치 단위로 분할 처리.

     

    ❗임의 데이터셋 사용

    • np.random을 이용해 임의의 데이터들을 데이터셋으로 만든후 텐서로 변환해 사용.
      import tensorflow as tf 
      #텐서플로 라이브러리 호출
      x = np.random.sample((100.3))
      # (100, 3)형태의 무작위 난수 생성
      datast = tf.data.Dataset.from_tensor_slices(x)
      # 일반이미지나 배열을 리스트 형식으로 데이터셋에 넣


    ❗텐서플로에서 제공하는 데이터셋 사용

    • tensorflow_datasets라는 별도의 패키지를 사용한다
      # tensorflow_datasets패키지 설치
      pip install tensorflow-datasets


    • 이후 tfds 이름으로 패키지를 호출한다.
      # tensorflow_datasets패키지 설치
      import tensorflow_datasets as tfds
      ds = tgds.load('mnist' , split = 'train', shuffle_files=True)


      ❗케라스에서 제공하는 데이터셋 사용

      import tensorflow as tf
      # 케라스를 이용하여 mnist 데이터셋 내려받기
      data_train, data_test = tf.keras.datasets.mnist.load_data()
      # 훈련데이터셋 정의
      (images_train, labels_train) = data_train
       # 검증 데이터셋 정의
      (images_test, labels_test) = data_test


      ❗인터넷에서 데이터셋을 로컬 컴퓨터에 내려받아 사용

      import tensorflow as tf
      url = ' 주소'
      text_path = tf.keras.utils.get_file("파일",origin=url)

     
     
     
     

profile
먀먀먐

0개의 댓글