안녕하세요 미니빅 입니다.
이번에는 다대다 모델/다대일 모델/일대다 모델에 대해서 얘기해봅시다!
지금까지는 입력과 출력이 1개(1대1 모델)씩일 때만을 얘기했습니다.
기억이 안 날 수 있으니, 역시 직전 파트들에서 했던 내용으로 얘기해볼께요.
part1에서 순차적 모델을 사용한 경우입니다. 입력값이 1, 출력값이 1인 1:1 모델입니다.
part4에서 함수적 모델로 1대1인 경우입니다.
두 모델 모두 아래 예시처럼 array 안에 1개의 리스트만 들어가 있었습니다.
그렇기에 1개의 값을 넣으면 출력 역시 그대로 1개만 나오는 구조였죠
이제는 입력과 출력이 여러개인 다대다(M:M) 구조에 대해서 얘기해보겠습니다.
array 안에 range 함수가 두 개가 들어간다면 처음 구조는 2행 100열이 됩니다. 이유는 생략하겠습니다.
transpose 함수를 통해서 행과 열을 그대로 교체를 해주면 100행 2열 구조의 array로 변환됩니다.
transpose 함수를 통해 행과 열을 바꿔주는 이유는, 입력 값을 받을 때, 열을 기준으로 값을 받기 때문입니다.
그리고 앞서 보여드린 train_test_split 등의 값을 나눠주고
이전 시간에 함수형 모델을 해서, 함수형 모델로 넣었습니다. 입력값 2, 출력값 2로 설정되어 있죠?
순차적 모델 같은 경우는 주석을 통해서 같은 조건을 넣어놨습니다.
모델 차이에 따른 summary 비슷할 겁니다.
fit 함수에서 validation_split 매개변수를 통해서 검증단계 값들을 지정해줍니다.
예 같은 경우는 전체 x*0.8(train 단에서 split)*0.25(fit 함수에서 split) 정도의 데이터가 검증하는 값(valid)이 됩니다.
마지막 평가예측도 지금까지 이전 part에서 많이 했죠?
다대일 / 일대다 모델도 비슷합니다.
다대일 모델 경우엔
위 예시처럼 x값만 여러 개가 들어가겠죠? 이상태에서 x만 행과 열을 바꿔주고
그에 따라 입력값은 2개, 출력값은 1개로 조절하면 됩니다. 나머지는 동일하죠
마지막으로 일대다 는 할 수 있겠죠?
이번에는 y값이 2개이기에 y에 transpose를 해줍니다.
입력은 1개, 출력은 2개로만 하면 되겠죠?
그럼 이번 포스팅도 이 정도로 마치겠습니다!
안녕!