일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 뉴노멀챌린지
- 성내동장어
- #nlp
- 링글
- 영어공부법
- #링글
- 둔촌역장어
- 해외취업컨퍼런스
- 소통챌린지
- Ringle
- 강동구장어맛집
- #링글후기
- #체험수업
- #영어공부
- 영어공부
- 총각네장어
- 장어랑고기같이
- #Ringle
- #영어발음교정
- 스몰토크
- #직장인영어
- 화상영어
- 링글경험담
- 오피스밋업
- CommunicateWiththeWorld
- 영어회화
- 링글리뷰
- 영어로전세계와소통하기
- 영어시험
- 링글커리어
- Today
- Total
Soohyun’s Machine-learning
Tensor manipulation 본문
====================================================================================
AXIS
====================================================================================
x = [[ 1., 2.,],
[ 3., 4.]]
-------------> axis = 1
|
|
v
axis = 0
가장 안쪽의 축은 axis=-1이라고 한다. 여기에서는 axis=1 과 동일하다.
axis axis axis 0 1 2 ..... 이런식으로 축이 간다. 안쪽일수록 rank (차원) - 1이나 마찬가지임. 3차원이면 axis 2가 가장 안쪽 축. 일일이 계산하는 번거로움이 있으므로 그냥 가장 안쪽축은 axis = -1 로 손쉽게 쓰면 된다. [ [ [
|
tf.reduce_sum(x).eval() # 결과값: 10.0 # 전체를 sum한 것
tf.reduce_sum(x, axis=0).eval() # 결과값: array([4., 6.], dtype=float32) # axis=0 즉, 세로의 값끼리 더한 것
tf.reduce_sum(x, axis=1).eval() # 결과값: array([3., 7.], dtype=float32) # axis=1 가로의 값끼리 sum 한 것
tf.reduce_mean(tf.reduce_sum(x, axis=-1)).eval() # 결과값 : 5.0 # 가장 안쪽의 축을 기준으로 sum해주고 그 값의 평균을 낸 것.
====================================================================================
ARGMAX
====================================================================================
argmax는 가장 큰 값이 있는 '위치' (index)를 구한다.
x = [[0, 1, 2],
[2, 1, 0]]
tf.argmax(x, axis=0).eval() # 결과값: array([1, 0, 0]) # 세로축을 기준으로 가장 큰 값을 구해라...에서 첫번째 column인 0과 2중에선
# 2가 더 큰 값이니 1, 두번째 1과 1에서는 첫번째 1이 체크되어 0, 세번째 2와 0에서는 2가 더 크니 0으로 체크됨
# 그래서 결과가 1, 0, 0 이 나오게 된다.
tf.argmax(x, axis=1).eval() # 결과값: array([2, 0]) # 가로축을 기준으로 가장 큰 값을 구해라- 0, 1, 2 중에서는 2번째가 젤 크니 2
# 2, 1, 0에서는 0번째에 있는 2가 가장 크므로 0. 그래서 결과값이 2, 0
tf.argmax(x, axis=-1).eval() # 결과값: array([2, 0]) # 위와 동일한 과정을 거치므로 결과값이 같다.
====================================================================================
RESHAPE
====================================================================================
t = np.array([[[0, 1, 2],
[3, 4, 5]],
[[6, 7, 8],
[9, 10, 11]]])
t.shape # 결과값: (2, 2, 3)
tf.reshape(t, shape=[-1, 3]).eval() # 보통 뒤쪽의 3 << 여기 부분, 안쪽 값은 건드리지 않는다.
결과값:
array([[ 0, 1, 2 ],
[ 3, 4, 5 ],
[ 6, 7, 8 ],
[ 9, 10, 11 ]])
tf.reshape(t, shape=[-1, 1, 3]).eval() # rank를 늘리고 싶을땐 이렇게 쓰면 됨
결과값:
array([[[ 0, 1, 2 ]],
[[ 3, 4, 5 ]],
[[ 6, 7, 8 ]],
[[ 9, 10, 11 ]])
====================================================================================
RESHAPE (SQUEEZE, EXPAND)
====================================================================================
tf.squeeze([[0], [1], [2]]).eval() # array([0, 1, 2], dtype=float32)
# 하나로 펴줌
tf.expand_dim([0, 1, 2], 1).eval() # array([[0],
[1],
[2]], dtype=int32)
====================================================================================
ONE HOT
====================================================================================
tf.one_hot([[0], [1], [2], [0]], depth=3).eval()
결과값:
array)[[[ 1., 0., 0. ]], # 0번째 자리에 1
[[ 0., 1., 0. ]], # 1번째 자리에 1
[[ 0., 0., 1. ]], # 2번째 자리에 1
[[ 1., 0., 0. ]]], dtype=float32) # 0번째 자리에 1
t = tf.one_hot([[0], [1], [2], [0]], depth=3)
tf.reshape(t, shape=[-1, 3]).eval()
결과값:
array([[ 1., 0., 0.,],
[ 0., 1., 0.],
[ 0., 0., 1.],
[ 1., 0., 0.]], dtype=float32)
====================================================================================
CASTING
====================================================================================
tf.cast([[ 1.8, 2.2, 3.3, 4.9 ], tf.int32).eval() # integer로 바꿀래~
결과값: array([1, 2, 3, 4], dtype=int32)
tf.cast([True, False, 1 == 1, 0 == 1], tf.int32).eval() # true or false를 0이나 1의 integer로 바꾼다.
결과값: array(1, 0, 1, 0], dtype=int32) # true라서 1, false라서 0, 1==1은 true니까 1, 0==1은 false니까 0
====================================================================================
STACK
====================================================================================
x = [1,4]
y = [2, 5]
z = [3, 6]
# pack along first dim.
tf.stack([x, y, z]).eval()
결과값:
array([[1, 4],
[2, 5],
[3, 6]], dtype=int32)
tf.stack([x, y, z], axis=1).eval()
결과값:
array([[1, 2, 3],
[4, 5, 6]], dtype=int32)
====================================================================================
ZIP
====================================================================================
for x, y in zip([1, 2, 3], [4, 5, 6]):
print(x, y)
결과값:
1 4
2 5
3 6
for x, y, z in zip([1, 2, 3], [4, 5, 6], [7, 8, 9]):
print(x, y, z)
결과값:
1 4 7
2 5 8
3 6 9
'Machine Learning' 카테고리의 다른 글
레노버 초반 세팅 (0) | 2022.10.31 |
---|---|
Kaggle preprocessing & feature engineering process flow (0) | 2019.04.08 |
[Reinforcement Learning] preliminaries (0) | 2018.11.04 |
Linear regression (0) | 2018.04.17 |
텐서플로 공부 (0) | 2017.10.08 |