PRGRM 8

CNN(컨볼루션 신경망) - 차원에 대해 꼭 알아야 하는 것

CNN을 하면서 이런 그림을 많이 본다. 근데 실제 코드를 보고, 데이터의 차원을 보면 이게 어떻게 작동하는지 이해가 가지 않는 부분이 있다. class Autoencoder(Model): def __init__(self): super(Autoencoder, self).__init__() self.encoder = tf.keras.Sequential([ layers.Input(shape=(28, 28, 1)), layers.Conv2D(16, (3,3), activation='relu', padding='same', strides=2), layers.Conv2D(8, (3,3), activation='relu', padding='same', strides=2)]) - 인풋: 28*28*1 - 첫번째 Co..

PRGRM/ML 2021.08.19

React memo를 반드시 사용해야 하는 이유

React memo는 부모요소가 다시 렌더링될때 요소의 입력 prop이 같은 경우, 함수가 다시 실행되는 것을 방지한다. 얼핏 보면 컴포넌트의 입력 prop이 같은데 출력이 다른 경우가 있을 것 같지만, 그런 경우가 있다면 그건 잘못된 설계다. React hook에서 렌더 부분은 state와 prop에 대해 순수해야만 한다. 그런데 state도 그대로, prop도 그대로인 상태에서 재렌더링을 했다고 해서 리턴값이 바뀌면, 그것은 hook이 순수함수여야 한다는 원칙을 어긴 것이다. 사용하지 않아야 할 수도 있는 단 한 가지 예외상황은, props에 대해 객체를 넘겨줄 때 뿐이다. (부모 요소에서 객체를 넘겨줄 경우, 객체가 변화할 시에 객체의 키-값만 바뀌고 객체 자체는 바뀌지 않는 경우가 있기 때문이다...

PRGRM/JS 2021.08.18

create-react-app npm start 오류 해결법

오류와 함께 이런 매뉴얼이 뜬다. 일단 매뉴얼대로 해보고, 안되는 경우에는 다음을 체크해보라. 프로젝트 폴더 상위 폴더들에 node_modules 폴더가 있지 않은가? (node_modules는 node_modules가 위치한 폴더 아래에 있는 모든 폴더에 영향을 준다. 그래서, 상위 폴더에도 node_modules가 있고 하위 폴더에도 node_modules가 있는 경우에 모듈들이 충돌을 일으킬 수 있다.)

PRGRM/JS 2021.08.18

[Haskell] 모든 Monad는 Applicative다. >>= 만으로

모든 Monad는 Applicative다. >>= 만으로 () :: f (a -> b) -> f a -> f b fs () xs = fs >>= \fs -> xs >>= \xs -> (fs xs) 모든 Applicative는 Functor다. 만으로 fmap :: (a -> b) -> f a -> f b fmap fs xs = (pure fs) xs 아래 답변을 보고 "일반화"의 의미에 대해 생각해보면 좋다. Haskell - is there extended monad type [ m (a -> m b) -> m a -> m b ] Functor has (a -> b) -> m a -> m b Applicative has f (a -> b) -> f a -> f b Monad has m a -> (a -..

PRGRM/Haskell 2021.08.18

[Haskell] Functor, Applicative, Monad의 필요

카테고리 이론은 배제하고 설명합니다. 애초에 Functor, Applicative, Monad가 타입 클래스라는것 부터, 카테고리 이론에서 말하는 Functor, Applicative, Monad와는 거리가 있게 됩니다. (타입클래스는 연산 그 자체가 아닌, 해당 연산이 적용 가능함을 나타냄) 포장된 타입 포장된 타입은 많이 쓰입니다. 가장 가까운 예로는 Maybe가 있습니다. Maybe는 Integral을 포장할 수도, String을 포장할 수도 있습니다. 패턴 매칭으로 포장을 해제해, 포장된 타입이 보관하고 있던 값에 대한 처리를 할 수 있습니다. 보통은 유용성을 위해 처리 이후 다시 포장을 합니다. (닫힌 연산이라고 해석할 수 있습니다.) Functor 위에서 말했듯 포장된 타입이 보관하고 있는 값..

PRGRM/Haskell 2021.08.18