해당 포스트에 나온 모든 상세한 내용은 여기를 참고하세요.
1.reduce_mean
reduce_mean 함수는 주어진 데이터의 함수를 도출합니다. 자료형에 영향을 받으므로 주의해야합니다.
1 2 3 4 5 6 7 8 9 10 11 | tf.reduce_mean([1, 2], axis=0).eval() //output 1 tf.reduce_mean([1., 2.], axis=0).eval() //output 1.5 //t.eval() -> tf.get_default_session().run(t) | cs |
위의 코드에서 int 형의 평균은 소수점이 누락되는데 비해 float 형의 평균은 소수점이 포함됩니다. eval()은 작업(세션)을 실행시키는 함수입니다.
1.Axis
axis는 축을 의미합니다. 이는 아래의 이미지를 참고하세요.
reduce_mean은 평균을 구하는 함수입니다. axis를 구하는 방법은 주어진 data가 몇차원인지 세는 방법과 같습니다.
즉, 바깥쪽 대괄호부터 순차적으로 axis = 0, axis = 1, axis = 2 ... 입니다.
따라서 평균값은 그림과 같습니다.
3.Argmax
argmax 함수는 사용자가 임의로 제공한 axis 기준으로 비교해서 더 큰 값의 그 인덱스를 반환합니다.
1 2 3 4 5 6 7 8 | //axis = 0 x = [[0, 1, 2], [2, 1, 0]] tf.argmax(x, axis = 0).eval() //output array([1, 0, 0]) | cs |
1 2 3 4 5 6 7 8 | //axis = 1 x = [[0, 1, 2], [2, 1, 0]] tf.argmax(x, axis = 1).eval() //output array([2, 0]) | cs |
4.Reshape
reshape는 데이터의 구조를 재구성하는 편리한 함수입니다.
[5, 2] shape는 데이터셋을 5개로 나누면서, 각 데이터셋에서는 2개의 데이터를 넣겠다는 뜻입니다. 따라서 그림과 같이 reshape됩니다.
5. Reshape (squeeze, expand)
1 2 3 4 5 6 | //squeeze tf.squeeze( [ [1], [2], [3], [4], [5] ] ).eval() //output array( [1, 2, 3, 4, 5] ) | cs |
squeeze 함수는 위와 같이 한 차원을 삭제합니다.
1 2 3 4 5 6 7 8 9 10 11 | //expand //axis tf.expand_dims( [1, 2, 3, 4, 5] , 0).eval() //output array( [ [1, 2, 3, 4, 5] ] ) tf.expand_dims( [1, 2, 3, 4, 5] , 1).eval() //output array( [ [1], [2], [3], [4], [5] ] ) | cs |
expand 함수는 사용자가 설정한 axis를 기준으로 한 차원을 추가합니다.
6. ones and zeros like
해당 함수는 주어진 사용자의 데이터의 구조와 같은, 각각 1과 0으로 채운 새로운 데이터를 반환합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | //my data x_data = [[2, 1, 0], [0, 1, 2]] //new ones like data tf.ones_like(x_data).eval() //output [1, 1, 1], [1, 1, 1]] //new zeros like data tf.zeros_like(x_data).eval() //output [0, 0, 0], [0, 0, 0]] | cs |
6. Broadcast
broadcast는 기존의 매트릭스 곱 (행렬 곱)에서 shape 구조가 맞지 않을 때도 자동으로 맞추어 계산합니다. 이는 강력한 기능이지만, 원하지 않는 결과를 출력할 수 있습니다.
'파이썬 > 머신러닝' 카테고리의 다른 글
[#E16] Convolution Neural Network (CNN - 준비편) (0) | 2018.12.14 |
---|---|
[#E15] MNIST 데이터란? (0) | 2018.12.14 |
[#E13] DROP OUT 이란? (0) | 2018.12.10 |
[#E12] W 변수 (Weights) 초기화 방법 (0) | 2018.12.10 |
[#E11] Vanishing Gradient와 ReLU (0) | 2018.12.10 |