cnn처음부터 만들어보려고 공부중인데 도움좀 줘라
구름ide에다 돈쓰기 싫어서 매트랩으로 cnn만들어보면서 공부중임
원래 나 혼자 공부할때는 3중포문으로 conv연산을 했음
그런데 파이썬으로 만드는 책 보니깐 im2col이란게 있더라고
내가 이해한 바로는 이미지를 2차원으로 만든뒤에 필터랑 행렬곱을 해주는건데
내가 직접 만들어본 결과 행렬곱 자체는 0.07초 걸려도 이미지를 2차원으로 바꿔주는게 3초정도 걸리고
위에 저 허접한 코드가 1초 걸렸거든
내가 im2col코드를 잘못 이해하고 구현해서 느린걸까 아니면 매트랩이 메모리가 작아서 늦게 걸린다던가 외부적인 요소일까?
im2col은 for문도 2개밖에 안쓰이는데 왤케 느린건지 모르것네
이미지는 배치사이즈는 100개 배치는 10개로 했어 나는 이미지 행렬을 28X28X100X10이런식으로 저장해놨는데 책에서 보니깐 데이터X채널X높이X너비 이렇게 저장하던데 순서의 차이가 딱히 있나? 높이랑 너비가 앞으로 가있어야지 직접 눈에 들어와서 편하다 생각했는데 그게 아닌가?
그냥 병신짓 그만하고 텐서플로우나 얌전히 쓸까
cpu 쓰면 큰행렬 연산시키는게 더 느릴수 있음 그리고 푸리에 변환 관련으로 엿먹기 싫으면 bc... 쓰는게 좋음
ㅇㅎ bc는 뭐에요? 제가 댓글에다 단 저런 순서같은건가요
배치 , 채널, 나머지 공간 차원 으로 보통 만듭니다.
보통은 bchw 순서가 국룰임
텐서플로우를 왜 쓰는건데
매트랩이 어떤 구조인지 모르겠지만 사용자 정의 함수는 최적화가 안되서 그런듯 메모리랑 스위칭 비용문제인 것 같은데 공식문서 찾아봐
일단 그거 해봐야 너한테 도움되는 거 없음 2024년에 그리고 bchw 는... 3차원 데이터나 비디오여서 차원이 하나 더 있다고 생각해봐 그럼 걍 끝에다가 박는게 일관성 있다는 거 느껴질거임
파이토치써라