CS/Machine Learning

[모두의 딥러닝]ML lab 08: Tensor Manipulation

dawonny 2021. 7. 18. 02:44
728x90
반응형

참고영상

https://www.youtube.com/watch?v=ZYX0FaqUeN4&list=PLlMkM4tgfjnLSOjrEJN31gZATbcj_MpUm&index=24&ab_channel=SungKim

 

각각의 김밥을 element라고 할 수 있고, 인덱스를 정해줄 수 있겠다

rank는 몇차원 array냐는거고,

shape은 몇개의 element가 있냐는 거다

그래서 1차원에, 7개 있다는 소리!

내가 특정한 자리의 element를 가져오고 싶으면 t[0]이런식으로 가져올 수 있겠고

slice를 활용해서 가져올 수도 있겠다.

차원이 늘어난다면?

rank는 2이고, shape는 4랑 3이 되겠다.

3개씩 들어있는데 4개 있는거니까

axis는 축이다. 다음슬라이드에서 더 자세히 보자

rank는 4이며 axis는 저런식으로 이름 붙인다

matrix를 하려면 shape을 맞춰줘야한다

위에껀 (2,2) 이고 그 아래껀 (2,1)이다

앞에꺼의 2번째 원소와 뒤에꺼의 1번째 원소가 같으니 곱이 가능하다

저렇게 일반곱을 하는 실수를 할 수도 있으니 주의가 필요하겠다

각각을 더해서 5, 5가 되었다 이경우에는

Broadcasting이란..

첫번째 예시를 보면 둘이 matrix연산이 불가능하지만

3을 [[3,3]]으로 바꾸어주어 계산하는거다(격을 맞춰주기)

그다음에 더하면 되고

rank가 다르거나 모양이 달라도 broadcasting을 하여 연산 하기 가능

이번엔 reduce mean을 보자

평균을 줄여서 구하는건가?

1,2의 평균을 구한다고 해보자

1.5가 아니라 1이 나온다

axis에 따라서 평균이 달라질 수 있다

이런 상황에서 axis가 0일때

1과 3의 평균, 그리고 2와 4의 평균을 구하면 2와 3이 나올거다

axis가 1일때 에는1과 2의 평균인 1.5와

3과 4의 평균인 3.5가 나올거다

맨 마지막에 axis=-1일때가 제일 많이 쓰일거다

가장 안쪽에 있는 걸 평균 구해라 라는 거니까

axis 축을 안쓴다면 모든 원소를 평균 내라 라는거다

sum도 평균과 마찬가지고 하면 된다.

argmax도 많이 쓰인다. 제일 큰 것의 위치를 구하는 것!

reshape이 많이 쓰이고 중요하다고 한다.

내가 다시 모양을 바꿔주는거다

원래 shape이 2, 2, 3 이었는데

-1, 3 (여기서 -1은 네 맘대로 해! 라는 뜻이다) 로 바꾸어주었다

3개씩 묶으라는 의미이다

reshape중에 많이 쓰는게 squeeze랑 expand 이다

squeeze는 [] 지워서 쫙 펴주는 거라고 생각하면 좋고

expand는 [] 넣어서 더 구분할 때 사용

뒤로갈수록 많이 쓰는 one hot

주어진 숫자를 one hot으로(1로) 바꾸고 싶다 라는 의미..

casting은 int형으로 바꿔줄수도 있고

true false값을 바꿔줄수도 있다

stack은 쌓는다는 것

axis를 바꿔가면서 쌓는 법을 바꿀수도 있다

ones로 하면 1로만 채워진 shape을 만들수 있고

zeros로 하면 0으로만 채워진 shape을 만들 수있다

zip은 한번에 묶어서 출력할 때 쓸 수 있다.

728x90
반응형