아니요 상관없습니다. cnn은 input의 모든채널을 고려해서 새로운 채널을 만듭니다. 때문에 independent 하게 골라도됩니다. 극단적으로 1개의 채널에서 100개의 채널을 만드는 cnn도 가능하고, 100개의 채널에서 1개의 채널로 줄이는 cnn 도 가능합니다.
@@코드없는프로그래밍 질문에 답변해주셔서 감사합니다. 질문을 정리하자면 이전 레이어의 output과 현재 레이어의 input이 같아야 하는 질문 이었습니다. 답변 해주신 것을 요약하면 1개의 채널에서 100개의 채널을 만드는 컨볼루션 레이어를 만들려면 input 에 1을 주고 output에 100을 주면 된다는 말씀같네요. 사실 제가 궁금했던 것은 '100개의 채널에서 1개의 채널로 줄이는 cnn을 만들때 중간에 사용되는 커널이 100의 깊이를 갖고 있어야만 하는것인가?' 였고, 이표현과 코드상에서의 ' 컨볼루션 레이어 input 에 100을 주고 output에 1을 주면 된다' 이 표현이 같은지도 궁금했습니다. 정리하면 -> 커널 깊이가 코드상에서의 컨볼루션 파라미터 input 과 같은지? 입니다.
@@박진우-x5z n1*12*12인 이전 피처맵에서 1*5*5짜리 커널 하나를 골라 컨볼루션 했다면 컨볼루션 연산은 피처맵과 커널의 깊이의 곱인 n1*1번 하게 됩니다. 그 결과물 n1개를 가중합이든 뭐든 사용해서 하나로 압축한 것이 다음 피처맵인 1*8*8 이 되는 거구요. 어차피 결과물이 얼마나 많든 간 가중합 같은 연산을 이용해 결과 깊이를 1로 줄일 것이기 때문에 답변에 '모든 채널을 고려해서 새로운 채널을 만든다'는게 이 말인 것 같아요. 만약 커널 깊이 2짜리를 고르면 컨볼루션 연산 개수는 n1*2개가 되지만 결국엔 깊이 1이었을 때처럼 결과 피처맵은 1*8*8 로 줄어들 것이기 때문에요.
n개의 채널을 가진 데이터에 컨볼루션을 적용하려면 무조건 n의 깊이를 가진 커널을 사용해야하는건가요?
예를들어 n1 * 12 * 12 의 피쳐맵이 나왔는데 이것을이용하여 n2 * 8 * 8 의 피쳐맵을 만들려면 깊이가 n1인 5 * 5 커널을 n2개 사용해야 하는게 맞나요?
아니요 상관없습니다. cnn은 input의 모든채널을 고려해서 새로운 채널을 만듭니다. 때문에 independent 하게 골라도됩니다.
극단적으로 1개의 채널에서 100개의 채널을 만드는 cnn도 가능하고,
100개의 채널에서 1개의 채널로 줄이는 cnn 도 가능합니다.
@@코드없는프로그래밍 질문에 답변해주셔서 감사합니다.
질문을 정리하자면 이전 레이어의 output과 현재 레이어의 input이 같아야 하는 질문 이었습니다.
답변 해주신 것을 요약하면 1개의 채널에서 100개의 채널을 만드는 컨볼루션 레이어를 만들려면 input 에 1을 주고 output에 100을 주면 된다는 말씀같네요.
사실 제가 궁금했던 것은 '100개의 채널에서 1개의 채널로 줄이는 cnn을 만들때 중간에 사용되는 커널이 100의 깊이를 갖고 있어야만 하는것인가?' 였고,
이표현과 코드상에서의 ' 컨볼루션 레이어 input 에 100을 주고 output에 1을 주면 된다' 이 표현이 같은지도 궁금했습니다.
정리하면
-> 커널 깊이가 코드상에서의 컨볼루션 파라미터 input 과 같은지?
입니다.
@@박진우-x5z n1*12*12인 이전 피처맵에서 1*5*5짜리 커널 하나를 골라 컨볼루션 했다면 컨볼루션 연산은 피처맵과 커널의 깊이의 곱인 n1*1번 하게 됩니다. 그 결과물 n1개를 가중합이든 뭐든 사용해서 하나로 압축한 것이 다음 피처맵인 1*8*8 이 되는 거구요. 어차피 결과물이 얼마나 많든 간 가중합 같은 연산을 이용해 결과 깊이를 1로 줄일 것이기 때문에 답변에 '모든 채널을 고려해서 새로운 채널을 만든다'는게 이 말인 것 같아요. 만약 커널 깊이 2짜리를 고르면 컨볼루션 연산 개수는 n1*2개가 되지만 결국엔 깊이 1이었을 때처럼 결과 피처맵은 1*8*8 로 줄어들 것이기 때문에요.