Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update utils.md #143

Closed
wants to merge 1 commit into from
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
85 changes: 43 additions & 42 deletions sources/utils.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ keras.utils.CustomObjectScope()
글로벌 커스텀 객체로의 변환은
`with` 명령문의 영역 내에서 유효합니다. `with` 명령문이 끝나면,
글로벌 커스텀 객체는
`with` 명령문 시작에서의 상태로 되돌아갑니다.
`with` 명령문 시작 상태로 되돌아갑니다.

__예시__

Expand All @@ -21,12 +21,12 @@ __예시__
```python
with CustomObjectScope({'MyObject':MyObject}):
layer = Dense(..., kernel_regularizer='MyObject')
# save, load, 등의 함수가 이름을 통해 커스텀 객체를 인지합니다
# save, load, 등의 함수가 이름으로 커스텀 객체를 인지합니다.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

먼저, 내용 수정인줄 알고 그에 맞게 리뷰했습니다.
단어는 대부분 잘 수정하신 것 같습니다.
내용 수정에 관한 리뷰는 삭제하지 않고 놔두도록 하겠습니다.
도움이 되셨으면 좋겠네요.
감사합니다.

save, load 등의 함수가 주어진 이름으로 커스텀 객체를 인지합니다.

뭔가 수식어를 통해 좀 더 설명하거나 말이 매끄럽게 이어지도록 하는게 좋을 것 같습니다.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

감사합니다! 반영하겠습니다.

```

----

<span style="float:right;">[[source]](https://github.com/keras-team/keras/blob/master/keras/utils/io_utils.py#L26)</span>
<span style="float:right;">[[source]](https://github.com/keras-team/keras/blob/master/keras/utils/io_utils.py#L25)</span>
### HDF5Matrix

```python
Expand All @@ -43,18 +43,18 @@ x_data = HDF5Matrix('input/file.hdf5', 'data')
model.predict(x_data)
```

`start`와 `end`를 제공해서 데이터셋을 조각으로 잘라 사용할 수 있도록 합니다.
제공된 `start`와 `end` 인수를 이용하여 데이터셋을 자를 수 있습니다.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

제공된 startend 인수를 이용하면 데이터셋에서 해당 구간만큼의 데이터를 조각처럼 사용할 수 있습니다.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

네 반영하겠습니다.


선택적으로 정규화 함수(혹은 람다)를 사용할 수 있습니다.
추가적으로 정규화 함수(혹은 람다)를 사용할 수 있습니다.
이는 회수된 모든 데이터 조각에 대해 호출됩니다.

__인수__

- __datapath__: 문자열, HDF5 파일의 경로입니다
- __dataset__: 문자열, datapath에 명시된 파일 내 HDF5 데이터셋의
이름입니다.
- __start__: 정수, 명시된 데이터셋의 원하는 조각의 시작부분입니다
- __end__: 정수, 명시된 데이터셋의 원하는 조각의 끝부분입니다
- __dataset__: 문자열, 'datapath'에 명시된 파일 내 HDF5 데이터셋의
이름입니다
- __start__: 정수, 데이터셋에서 자르기 원하는 부분의 시작점입니다
- __end__: 정수, 데이터셋에서 자르기 원하는 부분의 끝점입니다
- __normalizer__: 데이터가 회수될 때 데이터에 대해서 호출할 함수

__반환값__
Expand All @@ -73,14 +73,14 @@ keras.utils.Sequence()
데이터셋 등의 데이터 시퀀스를 학습하기 위한 베이스 객체.

모든 `Sequence`는 `__getitem__`과 `__len__` 메서드를 실행해야 합니다.
`on_epoch_end`를 실행하여 세대와 세대 사이에 데이터셋을 수정할 수 있습니다.
`on_epoch_end`를 실행하여 에폭과 에폭 사이에 데이터셋을 수정할 수 있습니다.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

on_epoch_end 메서드를 사용하면, 매 에폭의 끝에서 데이터셋을 수정할 수 있습니다.

`__getitem__` 메서드는 완전한 배치를 반환해야 합니다.

__안내_


`Sequence`는 멀티프로세싱을 보다 안전하게 실행합니다.
생성기와는 다르게 네트워크가 각 세대에 한 샘플을 한 번만 학습하도록
생성기와는 다르게 네트워크가 각 에폭당 한 샘플을 한 번만 학습하도록
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

에폭당, 띄어쓰기 확인 부탁드립니다. 제가 틀릴지도..

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

휘용님 이해가 잘 안되었어요.
'에폭당' -> '에폭 당'으로 수정하자는 말씀이신가요?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

네!

보장해줍니다.

__예시__
Expand All @@ -91,8 +91,8 @@ from skimage.io import imread
from skimage.transform import resize
import numpy as np

# 여기서 `x_set`은 이미지 파일 경로의 리스트입니다
# 그리고 `y_set`은 연관 클래스입니다.
# 여기서 `x_set`은 그림 파일 경로의 목록입니다
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이미지는 그냥 그대로 사용하는게 어떤가요? 일단 단어 컨벤션엔 존재하지 않습니다.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

네. 이미지는 그냥 이미지로 하겠습니다.

# 그리고 `y_set`은 관련 클래스입니다.

class CIFAR10Sequence(Sequence):

Expand Down Expand Up @@ -131,12 +131,12 @@ __인수__
- __y__: 행렬로 변환할 클래스 벡터
(0부터 num_classes까지의 정수).
- __num_classes__: 클래스의 총 개수.
- __dtype__: 문자열로 표현된 인풋의 데이터 자료형
- __dtype__: 문자열로 표현된 입력의 데이터 자료형
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

입력 값의

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

네 반영하였습니다.

(`float32`, `float64`, `int32`...)

__반환값__

인풋의 이진행렬 표현.
입력의 이진행렬 표현.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

위와 동일하게
'입력 값의' 가 더 자연스러운 것 같아요.

클래스 축이 마지막에 위치합니다.

__예시__
Expand Down Expand Up @@ -191,7 +191,7 @@ keras.utils.get_file(fname, origin, untar=False, md5_hash=None, file_hash=None,

캐시에 파일이 존재하지 않으면 URL에서 파일을 다운로드 합니다.

디폴트로 url `origin`에서 cache_subdir인 `datasets` 내 위치한
기본적으로 url `origin`에서 cache_subdir인 `datasets` 내 위치한
cache_dir인 `~/.keras`로 파일이 다운로드되고
`fname`으로 파일이름이 붙습니다. 그러므로
`example.txt` 파일의 최종위치는 `~/.keras/datasets/example.txt`가 됩니다.
Expand All @@ -206,25 +206,25 @@ __인수__
바로 그 위치로 파일이 저장됩니다.
- __origin__: 파일의 본래 URL.
- __untar__: 'untar'대신 'extract'를 권장합니다.
파일의 압축을 풀지 여부에 대한 불리언.
불리언 형식의 입력으로 파일의 압축 해제 여부 선택합니다.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

불리언 형식의 인수를 통해 파일의 압축 해제 여부를 선택합니다.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

네 변경하겠습니다.

- __md5_hash__: 'md5_hash'대신 'file_hash'를 권장합니다.
파일검사용 md5 해시.
- __file_hash__: 다운로드 후 예산되는 파일의 해시 문자열.
해시 알고리즘인 sha256과 md5 둘 모두 지원됩니다.
- __cache_subdir__: 파일이 저장되는 케라스 캐시 디렉토리 내 서브디렉토리.
- __cache_subdir__: 파일이 저장되는 케라스 캐시 디렉토리 내 하위디렉토리.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

아! 문법 체크는 포함되지 않은 업데이트인걸 또.. 깨달았습니다.
여기서부터 띄어쓰기는 무시할게요!

하위 디렉토리

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

네 반영하겠습니다.

절대적 경로 `/path/to/folder`가 명시된 경우
바로 그 위치로 파일이 저장됩니다.
- __hash_algorithm__: 파일을 검사하기 위한 해시 알고리즘을 선택합니다.
'md5', 'sha256', 그리고 'auto'를 선택할 수 있습니다.
디폴트 값인 'auto'는 사용중인 해시 알고리즘을 감지합니다.
기본값인 'auto'는 사용중인 해시 알고리즘을 감지합니다.
- __extract__: True 값일 경우 tar 혹은 zip처럼 Archive로 파일을 추출합니다.
- __archive_format__: 파일 추출을 시도할 Archive 형식.
'auto', 'tar', 'zip', 그리고 None을 선택할 수 있습니다.
'tar'는 tar, tar.gz, 그리고 tar.bz 파일을 포함합니다.
디폴트 'auto'는 ['tar', 'zip']입니다.
None 혹은 빈 리스트는 '발견된 매치가 없음'을 반환합니다.
기본값으로 'auto'는 ['tar', 'zip']입니다.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

변경이 필요할 것 같습니다.
기본 값으로 'auto'를 선택한 경우, 'tar' 또는 'zip' 중에서 골라집니다(?) 라던지...

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

'auto'를 선택할 경우 기본값으로 ['tar', 'zip']가 선택됩니다. 로 일단 수정하겠습니다.

None 혹은 빈 목록는 '발견된 매치가 없음'을 메시지를 반환합니다.
- __cache_dir__: 캐시된 파일을 저장할 위치.
None일 경우 디폴트 값은 [케라스 디렉토리](/faq/#where-is-the-keras-configuration-filed-stored)입니다.
None일 경우 기본값은 [케라스 디렉토리](/faq/#where-is-the-keras-configuration-filed-stored)입니다.

__반환값__

Expand All @@ -240,21 +240,21 @@ keras.utils.print_summary(model, line_length=None, positions=None, print_fn=None
```


모델을 요약하여 프린트합니다.
모델을 요약하여 출력합니다.

__인수__

- __model__: 케라스 모델 인스턴스.
- __line_length__: 프린트된 라인의 총 개수
- __line_length__: 출력된 줄의 총 개수
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

출력된 줄의 총 길이(?)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

아, 이부분 사용해보니 각 줄에 프린트되는 '길이'를 조정하는 메소드네요. 그래서 '개수' 말고 '길이'로 이해되게 문장을 수정해야 할 것 같습니다.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

'line_length: 출력 결과의 가로 길이' 로 일단 수정하였습니다.

(예. 터미널 창의 크기에 맞도록
이 값을 설정합니다).
- __positions__: 각 라인의 로그 요소의 절대적 혹은 상대적 위치.
값을 특정하지 않으면 디폴트 값인 `[.33, .55, .67, 1.]`로 설정됩니다.
- __print_fn__: 사용할 프린트 함수.
값을 특정하지 않으면 기본값인 `[.33, .55, .67, 1.]`로 설정됩니다.
- __print_fn__: 사용할 출력 함수.
모델 요약의 각 라인마다 호출됩니다.
문자열 요약을 캡처하려면
이 값을 커스텀 함수로 설정할 수 있습니다.
디폴트 값은 `print`(stdout으로 프린트)입니다.
기본값은 `print`(stdout으로 출력)입니다.

----

Expand All @@ -271,7 +271,7 @@ keras.utils.plot_model(model, to_file='model.png', show_shapes=False, show_layer
__인수__

- __model__: 케라스 모델 인스턴스.
- __to_file__: 플롯 이미지의 파일 이름.
- __to_file__: 플롯 그림의 파일 이름.
- __show_shapes__: 형태 정보를 보여줄지 여부.
- __show_layer_names__: 레이어 이름을 보여줄지 여부.
- __rankdir__: `rankdir` 인수가,
Expand All @@ -281,11 +281,11 @@ __인수__
- __expand_nested__: 중첩된 모델을 클러스터로 확장할지 여부.
- __dpi__: 도트 DPI.

__Returns__

A Jupyter notebook Image object if Jupyter is installed.
This enables in-line display of the model plots in notebooks.
Returns:

주피터가 설치된 경우 주피터 노트북 그림 객체를 반환합니다.
이것은 주피터 노트북에서 모델 플롯의 인-라인 출력이 가능합니다.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이 부분도 좀 더 매끄럽게 변경해야 될 것 같습니다.

Copy link
Contributor Author

@Denny-Hwang Denny-Hwang Oct 8, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

내용을 아래와 같이 수정하였습니다.
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
주피터가 설치된 경우 주피터 노트북 이미지 객체를 반환합니다.
이 메소드를 이용하면 주피터 노트북에서 모델을 바로 출력하여 확인할 수 있습니다.
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ


----

### multi_gpu_model
Expand All @@ -301,17 +301,17 @@ keras.utils.multi_gpu_model(model, gpus=None, cpu_merge=True, cpu_relocation=Fal
이 함수는 구체적으로 단일기계 다중-GPU 데이터 병렬처리를 실행합니다.
다음과 같은 방식으로 작동합니다:

- 모델의 인풋을 여러 서브 배치로 나눕니다.
- 모델 복사본을 각 서브 배치에 적용합니다.
각 모델 복사본이 특별히 배정된 GPU에서 실행됩니다.
- 모델의 입력을 여러 하위 배치로 나눕니다.
- 모델 복사본을 각 하위 배치에 적용합니다.
각 모델 복사본은 전용 GPU에서 실행됩니다.
- 결과물을 (CPU에서) 연결하여 하나의 큰 배치로 만듭니다.

예. `batch_size`가 64이고 `gpus=2`라면,
인풋이 각 32개의 샘플로 구성된 2개의 서브 배치로 나뉘고,
한 GPU 당 각각의 서브 배치가 처리된 후,
입력이 각 32개의 샘플로 구성된 2개의 하위 배치로 나뉘고,
한 GPU 당 각각의 하위 배치가 처리된 후,
64개의 처리된 샘플로 구성된 완전한 배치를 반환합니다.

8개의 GPU까지는 유사선형적인 속도증가를 유도합니다.
8개의 GPU까지는 거의 선형적으로 속도 향상이 예상됩니다.

이 함수는 현재 탠서플로우 백엔드에서만
사용가능합니다.
Expand All @@ -322,10 +322,10 @@ __인수__
메모리 부족 오류를 피하기 위해서 이 모델을 CPU에 생성해두는 방법이 있습니다
(아래의 사용법 예시를 참고하십시오).
- __gpus__: 정수 >= 2 혹은 정수 리스트, number of GPUs or
생성된 모델 복사본을 위치시킬 GPU의 개수 혹은 GPU ID의 리스트.
- __cpu_merge__: CPU의 유효범위 내에서 모델 가중치를 합치는 것을 강제할지
생성된 모델 복사본을 위치시킬 GPU의 개수 혹은 GPU ID의 목록.
- __cpu_merge__: CPU의 유효범위 내에서 모델 가중치를 합치는 것을 강제
여부를 명시하는 불리언 값.
- __cpu_relocation__: CPU의 유효범위 내에서 모델 가중치를 생성할지
- __cpu_relocation__: CPU의 유효범위 내에서 모델 가중치를 생성
여부를 명시하는 불리언 값.
만약 이전의 어떤 장치의 유효범위에도 모델이 정의되지 않았다면,
이 옵션을 활성화시켜 문제를 해결할 수 있습니다.
Expand Down Expand Up @@ -396,7 +396,7 @@ parallel_model.compile(..)
..
```

Example 3 - GPU에서 가중치를 병합하는 모델 학습 (NV-link에 권장됩니다)
예시 3 - GPU에서 가중치를 병합하는 모델 학습 (NV-link에 권장됩니다)

```python
..
Expand All @@ -420,3 +420,4 @@ __모델 저장하기__
다중-GPU 모델을 저장하려면, `multi_gpu_model`에 의해서 반환되는 모델보다는
템플릿 모델(`multi_gpu_model`에 전달되는 인수)과 함께
`.save(fname)` 혹은 `.save_weights(fname)`를 사용하면 됩니다.