임의의 수의 입력 및 출력을 가진 인공 신경 네트워크 (ANN)


10

내 문제에 ANN을 사용하고 싶지만 문제는 입력 및 출력 노드 번호가 수정되지 않은 것입니다.

내 질문을하기 전에 구글 검색을했는데 RNN이 내 문제에 도움이 될 수 있음을 발견했습니다. 그러나 내가 찾은 모든 예제는 어떻게 든 입력 및 출력 노드를 정의했습니다 .

그래서 전략을 찾고 있는데, Keras 또는 PyTorch에서 선호하는 전략을 현실화하거나 최소한 일부 예를 만드는 방법을 찾고 있습니다.

내 문제에 대한 자세한 내용 :

나는 두 개의 입력 목록을 가지고 있는데, 첫 번째의 길이는 고정되어 있고 두 개의 fe와 같습니다.

in_1 = [2,2] 

그러나 두 번째 목록의 길이는 유연하며 길이는 3에서 inf까지 가능합니다.

in_2 = [1,1,2,2]

또는

in_2 = [1,1,1,2,2,2,3,3,3]

또한 입력 목록은 서로 다릅니다. 첫 번째 목록은 출력 목록의 차원을 보여줍니다. 따라서 in_1 = [2,2] 인 경우 출력이 [2,2] 형식으로 재구성 될 수 있어야합니다.

현재 두 입력 목록을 하나로 결합하려고합니다.

in = in_1 + in_2 = [2, 2, 1, 1, 2, 2]

또한 출력의 길이는 in_2 목록 fi 와 동일합니다 .

입력 목록이 다음과 같은 경우 :

in_1 = [2, 2]
in_2 = [1, 1, 2, 2]

출력은 다음과 같아야합니다.

out = [1, 2, 1, 2]

어떤 아이디어라도 환영합니다!

답변:


6

답은 입력 벡터의 길이의 중요성 또는 그것이 어떻게 시작되는지에 달려 있습니다.

그러나 가장 간단한 해결책은 일반적으로 가장 큰 크기의 입력을 알고이를 벡터 수로 사용하는 것입니다. 주어진 입력의 길이가 짧으면 0 또는 적절한 기호로 패딩을 수행 할 수 있습니다. 따라서 벡터 [1, 2, 3] 및 [1, 2, 2, 3] 대신 벡터 [1, 2, 3, 0] 및 [1, 2, 2, 3]을 가질 수 있습니다.

출력에도 동일하게 적용 할 수 있습니다. 예상 출력이 [1, 2, 1] 및 [1, 3, 4, 1] 인 경우 첫 번째 출력을 [1, 2, 1, 0]으로 처리 할 수 ​​있습니다

이것은 단순한 해킹이 아닙니까?

일반적으로 신경망은 근사 기능을합니다. 이상적으로는 벡터 (행렬)를 입력으로, 벡터 (행렬)를 출력으로 나타냅니다. 입력 벡터의 크기를 고정하는 것이 항상 바람직한 이유입니다.


좋습니다, 입력에 대해 패딩을 할 수 있습니다. 그러나 출력 노드의 크기를 정의하는 방법은 무엇입니까?
패디

3

RNN에 대해 고정 된 수의 입력을 잘못 이해했을 수도 있습니다. 이것은 타임 스텝 당 입력 수입니다 . 모든 예제에는 타임 스텝 당 고정 된 수의 입력이 있습니다 : 1! 특수한 "끝"토큰으로 마무리하여 신경망에 한 번에 하나씩 공급합니다 (항상 두 번째 입력이 가능함). 엔드 토큰을 볼 때까지 출력을 제공하지 말고, 특수 엔드 출력 토큰으로 끝나는 결과의 구성 요소를 한 번에 하나씩 출력하도록 지시하십시오.


와우 고마워! 더 잘 이해하기 위해 적절한 튜토리얼 / 예제를 알고 있습니까?
Paddy

1
@Paddy 일부 링크는 awesome-rnn 을 참조하십시오. 예를 들어 char-rnn 은 꽤 재미 있습니다.
Arthur Tacca

2

첫 번째 목록이 거의 변하지 않는다는 것을 알기 때문에 (특정 지오메트리를 설명하기 만하면) 모든 고유 한 in_1 구성 마다 서로 다른 여러 가지 특수화 된 NN을 생성 하고 네트워크 공급에 in_2 만 사용할 수 있습니다.

따라서 in_1 은 다른 네트워크를 구동 할 수 있습니다.

in_1=[1,1]? --> NN #1 (n1) --> (o1)
in_1=[2,1]? --> NN #2 (n1,n2) --> (o1,o2)
in_1=[2,2]? --> NN #3 (n1,n2,n3,n4) -> (o1,o2,o3,o4)

첫 번째 단계에서 구성을 결정하고 (예 : dict 작성) 그에 따라 특수 네트워크를 교육 / 공급합니다.


실제로, 그것은 좋은 생각이지만, 모양의 수는 상당히 큽니다 ... 어쨌든, 입력 주셔서 감사합니다!
Paddy
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.