2023.03.07 - [분류 전체보기] - implement_CNN(start)
implement_CNN(start)
시각 피질 안의 뉴런들이 작은 국부 수용장을 가진다. 이는 뉴런들이 시야의 일부 버위 안에 있는 시각 자극에만 반응한다는 뜻이다. 각 뉴런들은 동일한 수용장을 가지지만 다른 각도의 선분에
teach-meaning.tistory.com
풀링 연산의 구현
class POOLING:
pad = PADDING()
pool_result = []
def max_pooling(self, input, pooling_size):
"""
input : 입력 데이터
pooling_size : pooling size
"""
pooling_matrix = self.pad.padding(input, input.shape[0] % pooling_size)
for col in range(0, pooling_matrix.shape[0], pooling_size):
for row in range(0, pooling_matrix.shape[1], pooling_size):
padding_result = []
for pooling_col in range(pooling_size):
for pooling_row in range(pooling_size):
padding_result.append(pooling_matrix[pooling_col + col, pooling_row + row])
self.pool_result.append(max(padding_result))
# 연산 결과를 크기에 맞게 바꿔준다.
self.pool_result = np.array(self.pool_result).reshape(int(pooling_matrix.shape[0] / pooling_size), -1)
1 : pooling 사이즈와 입력 데이터간 크기가 맞지 않을 수 있으므로 padding 의 수행
2 : pooling_matrix 에서 pooling_size에 맞게 가장 큰 값을 pool_result 에 넣어준 후 크기에 맞게 바꿔준다.
pool = POOLING()
pool.max_pooling(cnn.cnn_result[0], 2)
pool.pool_result.shape
>>>
(11, 11)
연산 후 크기가 감소한 것을 확인 가능
'implement_ml_models > CNN' 카테고리의 다른 글
implement_CNN(수정) (0) | 2023.03.09 |
---|---|
implement_CNN(same_padding) (0) | 2023.03.09 |
implement_CNN(start) (0) | 2023.03.07 |
implement_CNN(pooling) (0) | 2022.12.06 |
impelment_CNN(stride) (0) | 2022.12.06 |