대학원 일기

케라스 창시장에게 배우는 딥러닝 3장 본문

AI/인공지능 기초

케라스 창시장에게 배우는 딥러닝 3장

대학원생(노예) 2023. 12. 8. 11:06

Chapter 3. 케라스 텐서플로 소개

컴파일 단계 : 학습과정 설명(p136 내용)

  • 모델 구조 정의
    • 손실함수 (keras.optimizers.손실함수)
    • 옵티마이저 (keras.losses.옵티마이저함수)
    • 측정 지표 (keras.metrics.측정 지표)
  • keras
    • .compile()
    • 아래쪽에 예시코드 적은것 잇어요

층(Layer)

  • page 130 - 층의 구조
  • Page 132
    • 안나올 것 같기는 한데... 혹시나 정방향 패스를 정의해라고 하면 여기 페이지 보시면 됩니다
      • def call(self,inputs) 부분
        • input 이랑 W 내적하고 bias를 더해주고, 선언한 acitivation있으면 activation 함수까지 거친 값을 return
  • page 133
    • Sequantial로 Dense layer 만드는 코드
  • 층은 핵심 클래스인데 무엇을 캡슐화한 객체일까요?
    • 가중치(상태)
    • 연산(정방향 패스)

fit 메소드 (p139)

  • 구성
    • 입력 샘플(numpy 배열)
    • 훈련 타깃(numpy 배열)
    • epochs
    • batch_size
  • 반환 객체
    • history객체(딕셔너리)
      • 이전에 history1 = model.fit(~arg) 했던거 기억하시나요.... 그럼 쓸 때 history1.history['key값 뭐 예를 들면 loss같은..'`이렇게 쓸 수 있어요
  • numpy array와 tensor의 차이점 : tensor에는 값을 할당 할 수 없다. 즉 텐서는 상수이다. ->이를 해결하기위해 변수가 존재 (tf.Variable 사용)
  • 층호환 (layer compatibility) : 모든 층이 특정 크기의 입력 텐서만 받고, 특정 크기의 텐서만 반환하는 것
  • 코드 문제,,,
  • adam, sparse_categorical_crossentropy, accuracy 를 사용한 complie method 를 작성해 보시오.
model.compile(optimizer = 'adam',
               loss = 'sparse_categorical_crossentropy',
               metrics = ['accuracy'])

 

 

텐서플로의 핵심 객체

  • 텐서
  • 변수
  • 텐서연산
    • 덧셈, relu, matmul
  • 그레이디언트 테이프
    • 자동 미분(automatic differentiation)을 수행하기 위한 도구
    • 딥러닝 모델을 학습할 때, 주로 역전파(backpropagation) 알고리즘을 사용하여 그래디언트(gradient)를 계산하는 데에 활용
    • gradinet = tape.gradient(loss, weights) : 가중치에 대한 모델 손실의 그레디언트를 계산
input_var = tf.Variable(initial_value=3.)
with tf.GradientTape() as tape:
   result = tf.square(input_var)
gradient = tape.gradient(result, input_var)
  • 자동 미분을 수행할 때, 기본적으로는 변수(Variable)를 자동으로 감시하고 해당 변수들에 대한 그래디언트를 계산
  • 변수가 아닌 , 상수를 감시하려면 직접 지정해줘야 함
  • tape.watch()
    • 특정 텐서(변수나 상수)를 감시(watch)하도록 지정
    • GradientTape 내부에서 감시되지 않은 텐서에 대한 그래디언트를 계산하려고 시도하면 TensorFlow는 그래디언트를 찾을 수 없다는 의미로 None 을 반환
    • 다시 말하면, tape.watch(x) 를 사용하지 않으면 tapex 를 감시하지 않아서 x 에 대한 그래디언트를 계산할 수 없게 됨
input_const = tf.constant(3.)
with tf.GradientTape() as tape:
   tape.watch(input_const) # 상수에 대한 tape.watch
   result = tf.square(input_const)
gradient = tape.gradient(result, input_const)
tf.constant는 TensorFlow에서 상수(constant) 텐서를 생성하는 함수 이 함수를 사용하여 생성된 텐서는 값이 변경되지 않는 상수로, 모델의 가중치처럼 학습 중에 업데이트되지 않음 모델의 가중

'AI > 인공지능 기초' 카테고리의 다른 글

케라스 창시장에게 배우는 딥러닝 5장  (0) 2023.12.12
케라스 창시자에게 배우는 딥러닝 2장  (1) 2023.12.06
모델 저장과 콜백  (1) 2023.12.06
딥러닝 모델 학습  (0) 2023.12.06
딥러닝 구조와 모델  (0) 2023.12.06
Comments