전체 글
-
[HandsOn]12. 텐서플로를 사용한 사용자 정의 모델과 훈련 - 내용 정리 2[도서완독]Hands On Machine Learning 2022. 7. 20. 18:40
뭔가 어려워보인다... 힘내서 시작하자!! 아자아자😍 12.3 사용자 정의 모델과 훈련 알고리즘 12.3.1 사용자 정의 손실 함수 def huber_fn(y_true, y_pred): error = y_true - y_pred is_small_error = tf.abs(error) < 1 squared_loss = tf.square(error) / 2 linear_loss = tf.abs(error) - 0.5 return tf.where(is_small_error, squared_loss, linear_loss) 이런 식으로 내가 만들고 싶은 손실 함수를 만들 수 있다. model.compile(loss=huber_fn, optimizer='nadam') model.fit(X_train, y_trai..
-
[HandsOn]12. 텐서플로를 사용한 사용자 정의 모델과 훈련 - 내용 정리 1[도서완독]Hands On Machine Learning 2022. 7. 19. 19:14
10,11과에서 고수준 API인 tf.keras 를 통해 여러가지를 해 보았음! 사실 딥러닝 작업의 95%는 tf.keras나 tf.data(13장에서 다룰것) 외에 다른 것은 필요하지 않다고 함... 하지만 저수준 파이썬API도 한번 해보자. 나만의 손실 함수나, 지표 등을 만들어 세부적으로 제어하고 싶을 때 필요하기 때문. 12.1 텐서플로 훑어보기 대부분 고수준 API를 사용하지만, 자유도가 필요한 경우 저수준 API를 사용하여 텐서를 직접 다루게 됨. 구글의 텐서플로 허브를 사용하면 사전훈련된 신경망을 손쉽게 다운로드하여 재사용할 수 있다. 혹은 텐서플로 모델 저장소(https://github.com/tensorflow/models)에서 많은 신경망 구조를 다운로드할 수 있음. 텐서플로 리소스 페..
-
[HandsOn]11. 심층 신경망 훈련하기 - 내용 정리 3[도서완독]Hands On Machine Learning 2022. 7. 8. 16:48
11.4 규제를 사용해 과대적합 피하기 11.4.1 L1과 L2 규제 신경망의 연결 가중치를 제한하기 위해 l2 규제를 사용하거나 희소 모델을 만들기 위해 l1 규제를 적용 layer=keras.layers.Dense(100, activation="elu", kernel_initializer="he_normal", kernel_regularizer=keras.regularizers.l2(0.01)) 일반적으로 네트워크의 모든 은닉층에 동일한 활성화 함수, 동일한 초기화 전략을 사용하거나 하기 때문에 똑같은 코드를 반복하는 경우가 많음... 이는 코드를 읽기 어렵게 만듬. 코드를 리팩터링 하거나, 파이썬의 functools.partial() 함수를 사용 from functools import partial..
-
[HandsOn]11. 심층 신경망 훈련하기 - 내용 정리 2[도서완독]Hands On Machine Learning 2022. 7. 6. 18:39
11.2 사전훈련된 층 재사용하기 전이 학습(transfer learning) 아주 큰 규모의 DNN을 처음부터 새로 훈련하는 것은 힘듬... 비슷한 유형의 문제를 처리한 신경망이 이미 있는지 찾고, 그 신경망의 하위층을 재사용하는 것이 좋다. 훈련 속도, 훈련 데이터의 양 면에서 좋음 이미지, 텍스트 데이터에 주로 쓰인다고 함! ❓그럼 모든 DNN을 짤 때 신경망을 좀 서치하는 게 좋은건가? ❗요즘은 텐서플로 내부에 유명한 모델 구조는 다 패키지로 제공된다고 함. 단, 이미지 텍스트 데이터 한정...😂 ❗ 정형 데이터는 적당히 dense 여러개 쌓으면 웬만하면 된다고 하는데... 원본 모델의 출력층 바꾸어야 함. 원본 모델의 상위 은닉층은 하위 은닉층보다 덜 유용함. -> 재사용할 층 개수를 잘 선정하..
-
[HandsOn]11. 심층 신경망 훈련하기 - 내용 정리 1[도서완독]Hands On Machine Learning 2022. 7. 5. 15:51
10장에서 얕은 네트워크를 훈련해 보았다. 아주 복잡한 문제를 다뤄야 한다면? 아마도 수백 개의 뉴런으로 구성된 10개 이상의 층을 수십만 개의 가중치로 연결해 훨씬 더 깊은 신경망을 훈련해야 할 것... 훈련중 마주칠 수 있는 문제: 그레이디언트 소실 또는 그레이디언트 폭주 문제 대규모 신경망을 위한 훈련 데이터가 충분하지 않거나, 레이블을 만드는 작업에 비용이 너무 많이 들어갈 수 있음 훈련이 너무 느려짐 수백만 개의 파라미터를 가진 모델이 훈련 세트에 과대적합될 위험이 매우 큼. 특히 훈련 샘플이 충분하지 않거나 잡음이 많은 경우 그럼 그레이디언트 소실과 그레이디언트 폭주 문제의 널리 알려진 해결 방법 레이블 된 데이터가 적을 때 도움이 되는 전이 학습과 비지도 사전훈련 대규모 모델의 훈련 속도를 ..
-
[HandsOn]10. 케라스를 사용한 인공 신경망 - 내용 정리 3[도서완독]Hands On Machine Learning 2022. 7. 1. 21:42
10.2.4 함수형 API를 사용해 복잡한 모델 만들기 순차적이지 않은 신경망의 예. 복잡한 패턴과 간단한 규칙을 모두 학습할 수 있다. 이런 신경망을 만들어서 캘리포니아 주택 문제를 해결해보자! input_=keras.layers.Input(Shape=X_train.shape[1:]) hidden1=keras.layers.Dense(30,activation='relu')(input_) hidden2=keras.layers.Dense(30,activation='relu')(hidden1) concat=keras.layers.Concatenate()([input_,hidden2]) output=keras.layers.Dense(1)(concat) model=keras.Model(inputs=[input_]..
-
[HandsOn]10. 케라스를 사용한 인공 신경망 - 내용 정리2[도서완독]Hands On Machine Learning 2022. 7. 1. 17:16
10.2 케라스로 다층 퍼셉트론 구현하기 10.2.2 시퀀셜 API를 사용하여 이미지 분류기 만들기 케라스를 사용하여 패션 MNIST 적재 픽셀 강도가 정수(0~255)로 되어 있음 경사 하강법으로 신경망 훈련하기 때문에 입력 특성의 스케일을 조정해야 함 MSE 데이터에 잡음이 많기 때문에 과대적합을 막는 용도로 뉴런 수가 적은 은닉층 하나만 사용했다고 함. 여튼 시퀀셜 API는 매우 쉽당. 하지만 입력,출력이 여러 개거나 더 복잡한 신경망을 만들어야 할 때, 함수형(functional API)를 사용한다! 그건 다음 포스팅에서!
-
[HandsOn]10. 케라스를 사용한 인공 신경망 - 내용 정리1[도서완독]Hands On Machine Learning 2022. 6. 28. 19:36
1~2 3. 10.2.3까지 인공 신경망의 초창기 구조를 간단히 소개 다층 퍼셉트론(MLP) 소개 케라스 API를 사용하여 인공 신경망을 구현하는 방법 10.1 생물학적 뉴런에서 인공 뉴런까지 현재는 인공 신경망의 또 다른 부흥기 신경망을 훈련하기 위한 데이터가 많아짐. 인공신경망은 규모가 크고 복잡한 문제에서 머신러닝 기법보다 좋은 성능을 냄 컴퓨터 하드웨어의 발전, GPU 카드의 생산, 클라우드 플랫폼 훈련 알고리즘의 향상 투자와 진보의 선순환 10.1.2 뉴런을 사용한 논리 연산 생물학적 뉴런에서 착안한 매우 단순한 신경망 모델 제안-> 이것이 나중에 인공 뉴런이 됨 하나 이상의 이진(on/off) 입력과 이진 출력을 가짐 1. 항등 함수: A가 활성화되면 C 활성화. 반대로는 꺼짐 2. 논리곱 연..