분류 전체보기
벡터 전치(Vector Transposition) 알아보기: Tensorflow, Pytorch, Numpy
벡터 전치(Vector Transposition)란 무엇인가?벡터 전치(vector transposition)는 벡터의 행과 열을 교환하는 연산이다. 특정 벡터 $\mathbf{v}$ 가 있다고 했을 때 이 벡터에 대한 전치 연산은 $\mathbf{v}^T$ 로 표현되며, 행 벡터를 열 벡터로 바꿀 때 자주 사용된다. 행 벡터 (Row Vector): $\mathbf{v} = \begin{bmatrix} v_1 & v_2 & v_3 & \cdots & v_n \end{bmatrix}$열 벡터 (Column Vector): $\mathbf{v}^T = \begin{bmatrix} v_1 \\ v_2 \\ v_3 \\ \vdots \\ v_n \end{bmatrix}$ 벡터 전치가 일어나면, 행과 열이 교..
머신러닝에서의 Tensor란 무엇인가? Numpy, TensorFlow, Pytorch의 Tensor 알아보기
Tensor란 무엇인가?머신러닝을 공부하다보면 Tensor라는 말이 자주 쓰인다 TensorFlow 프레임웍에는 아예 이름에 Tensor가 들어가 있고, Pytorch에서 스칼라 값을 만들 때는 torch.tensor(100) 같이 사용하기도 한다. 도대체 Tensor가 무엇을 뜻하길래 프레임웍의 이름에도 들어가 있고 모델을 만드는 함수의 이름으로도 들어가는 것일까?Tensor는 머신러닝에서 데이터 구조를 일반화한 개념으로, 벡터와 행렬을 포함하여 더 높은 차원의 데이터를 표현할 수 있는 다차원 배열이다. 0차원 스칼라, 1차원 벡터, 2차원 행렬, 그리고 n차원 배열을 Tensor를 사용해 표현할 수 있으며, Tensorflow나 Pytorch같은 프레임웍은 Tensor를 기본 데이터 구조로 채택한다...
[Kotlin] 행렬에서 특정 원소에 0이 포함되면 해당 원소의 행과 열 모두 0으로 만들기
문제 행렬에서 특정 원소에 0이 포함되면 해당 원소의 행과 열 모두 0으로 만들기 문제 풀기 전 확인 사항 - 행렬의 최대 행과 열의 수 확인 - 원소는 모두 Int 인지 확인 문제 풀이 1. 한 번 모든 원소를 돌면서 0으로 만들어질 row index와 column index를 체크한다. 2. 체크된 index에 해당하는 row, column을 모두 0으로 만든다. class Solution { fun makeZero(matrix: Array) { if (matrix.size == 0) return val rowDoneArray = BooleanArray(matrix.size) val columnDoneArray = BooleanArray(matrix[0].size) matrix.forEachIndex..
[Kotlin] Matrix 90도 회전시키기 : Matrix Rotation
문제 NxN Matrix가 주어졌을 때 이를 90도 회전시키는 알고리즘을 작성해라. 각 픽셀은 4bytes로 이루어져 있다. 문제 풀기 전 확인 사항 - 시작점은 [0, 0]으로 둔다. -> [x, y] 위치는 [y, N-1-x]로 이동한다. 문제 풀이1 이런 문제는 먼저 쉬운 방식으로 풀어야 한다. 1. 같은 크기의 Matrix를 만들어낸다. 2. [x, y] 위치의 원소를 새로운 Matrix의 [y, N-1-x] 로 이동한다. class Solution() { fun rotate(matrix: Array): Array { val SIZE_N = matrix.size val newMatrix = Array(SIZE_N) { IntArray(SIZE_N) } matrix.forEachIndexed { r..
[Kotlin] String 압축하기 : 반복되는 문자 압축하기
문제 반복되는 문자를 합쳐서 [문자][반복된 숫자]로 표현하라. 만약 압축된 문자가 원래 문자보다 길다면 원래 문자를 반환하라 예1) aaabbccc -> a3b2c3 예2) abbc -> abbc : a1b2c1 보다 원래 문자가 더 짧으므로 문제 풀기 전 확인 사항 - String에 스페이스가 있는가? - 같은 길이면 어떻게 하는가? 문제 풀이 - string의 첫 Char로 초기화 하고 포인터를 1씩 증가시키면서 같은 Char이 나오는지 확인해야 한다. - 같은 Char이 나오면 counter을 1씩 증가시킨다. - 다른 Char이 나오면 StringBuilder에 추가한다. class Solution() { fun compress(string: String) : String { var pointe..