1번째 줄: |
1번째 줄: |
| + | == 개요 == |
| + | |
| + | === 설치 === |
| + | 간단히 pip install keras를 통해 설치하거나.. 최근엔 텐서플로우를 설치하면 그 안에 설치되어 있다. 어차피 백엔드로 텐서플로우를 사용하는 경우가 많을테니.. 텐서플로우만 설치하면 된다. |
| + | |
| + | ==== 설치 확인 ==== |
| + | <syntaxhighlight lang="python"> |
| + | import keras |
| + | print(keras.__version__) |
| + | </syntaxhighlight> |
| + | |
| == 데이터 처리 == | | == 데이터 처리 == |
| 데이터 입럭은 3가지 형태로 이루어진다. | | 데이터 입럭은 3가지 형태로 이루어진다. |
| | | |
| # 넘파이 배열. 일반적인 데이터과학에서 자주 사용되는 형태. | | # 넘파이 배열. 일반적인 데이터과학에서 자주 사용되는 형태. |
| + | #:- 데이터 과학에서 pandas의 dataframe을 많이 사용하는데, 이를 넘파이의 ndarray로 변환하여야 사용할 수 있다. <code>train_x = df.values</code>형태로 ndarray 값을 얻을 수 있다. |
| # 텐서플로우의 데이터셋 오브젝트. 성능행상에 도움. | | # 텐서플로우의 데이터셋 오브젝트. 성능행상에 도움. |
| #:- 이미지 파일을 데이터셋화 : tf.keras.preprocessing.image_dataset_from_directory | | #:- 이미지 파일을 데이터셋화 : tf.keras.preprocessing.image_dataset_from_directory |
141번째 줄: |
153번째 줄: |
| |} | | |} |
| | | |
− | = 드롭아웃 = | + | = 오버피팅 막기 = |
| + | |
| + | == 드롭아웃 == |
| <syntaxhighlight lang="python3"> | | <syntaxhighlight lang="python3"> |
| from keras import model, layers | | from keras import model, layers |
148번째 줄: |
162번째 줄: |
| models.add(....) | | models.add(....) |
| models.add(layers.Dropout(0.5)) # 얼마의 비율로 드롭아웃을 실행할 것인가. | | models.add(layers.Dropout(0.5)) # 얼마의 비율로 드롭아웃을 실행할 것인가. |
| + | </syntaxhighlight>층 사이사이에 넣을 수 있다. |
| + | |
| + | == 가중치 규제 == |
| + | |
| + | === L2 규제 만들기 === |
| + | <syntaxhighlight lang="python3"> |
| + | from keras import model, layers, regularizers |
| + | |
| + | l2_model = models.Sequential() |
| + | l2_model.add(layers.Dense(16, kernel_regularizer=regularizers.l2(0.001), # 0.001은 가중치에 곱할 값. |
| + | activation='relu', input_shape=(10000,))) |
| + | l2_model.add(layers.Dense(16, kernel_regularizer=regularizers.l2(0.001), |
| + | activation='relu')) |
| + | l2_model.add(layers.Dense(1, activation='sigmoid')) |
| + | </syntaxhighlight> |
| + | |
| + | === L1 규제 만들기 === |
| + | <syntaxhighlight lang="python3"> |
| + | from keras import model, layers, regularizers |
| + | |
| + | l1_model = models.Sequential() |
| + | l1_model.add(layers.Dense(16, kernel_regularizer=regularizers.l1(0.0001), |
| + | activation='relu', input_shape=(10000,))) |
| + | l1_model.add(layers.Dense(16, kernel_regularizer=regularizers.l1(0.0001), |
| + | activation='relu')) |
| + | l1_model.add(layers.Dense(1, activation='sigmoid')) |
| + | </syntaxhighlight> |
| + | |
| + | === L1, L2 동시 사용 === |
| + | <syntaxhighlight lang="python3"> |
| + | l1l2_model = models.Sequential() |
| + | l1l2_model.add(layers.Dense(16, kernel_regularizer=regularizers.l1_l2(l1=0.0001, l2=0.0001), |
| + | activation='relu', input_shape=(10000,))) |
| + | l1l2_model.add(layers.Dense(16, kernel_regularizer=regularizers.l1_l2(l1=0.0001, l2=0.0001), |
| + | activation='relu')) |
| + | l1l2_model.add(layers.Dense(1, activation='sigmoid')) |
| </syntaxhighlight> | | </syntaxhighlight> |
| | | |