[Python] 신경망 처음부터 끝까지 구현하기 04

8832 단어 pythonMLML

신경망 처음부터 끝까지 구현하기 04

  • arrange_data 함수 생성
def arrange_data(mb_size, train_ratio):
    
    global shuffle_map, test_begin_index
    
    # suffle_map 변수에 0부터 데이터 행 개수 까지 저장 (0 ~ len(data) -1)
    shuffle_map = np.arange(data.shape[0])
    
    # suffle_map을 무작위로 섞음
    np.random.shuffle(shuffle_map)

    # 전체 데이터에서 train_ratio만큼 곱한 값(훈련 데이터 크기)을 mb_size(미니 배치 크기)로 나눈 값을 저장
    mini_batch_step_count = int(data.shape[0] * train_ratio) // mb_size
    
    # 미니 배치 크기와 개수를 곱한 값 = test데이터 시작 인덱스
    test_begin_index = mini_batch_step_count * mb_size
    return mini_batch_step_count


  • 함수 실행 결과
mini_batch_step_count = arrange_data(mb_size = 2, train_ratio = 0.8)
print("mini_batch_step_count :", mini_batch_step_count)
print("shuffle_map : ", shuffle_map[:3])
print("test_begin_index : ", test_begin_index)



  • get_train_data 함수 생성
def get_train_data(mb_size, n):
    if n == 0:
        # shuffle_map의 훈련 데이터를 섞음
        np.random.shuffle(shuffle_map[:test_begin_index])
        
    # n 위치의 한 미니배치를 train_data에 넣는다
    train_data = data[shuffle_map[mb_size * n : mb_size * (n+1) ]]

    # x값과 y값으로 나눠서 리턴
    return train_data[ : , : -output_cnt], train_data[ : , -output_cnt : ]


  • 함수 실행 결과
train_x, train_y = get_train_data(mb_size = 2, n = 1)
print(train_x)
print(train_y)



  • get_test_data 함수 생성
def get_test_data():
    # shuffle_map의 test인덱스 부터의 값을 test_data에 넣는다
    test_data = data[shuffle_map[test_begin_index:]]
    
    # x값과 y값으로 나눔
    return test_data[ : , : -output_cnt], test_data[ : , -output_cnt : ]


  • 함수 실행 결과
test_x, test_y = get_test_data()
print(test_x)
print("=================================")
print(test_y)

좋은 웹페이지 즐겨찾기