2016-08-02 3 views
0

noelarn과 함께 작업하고 ConcatLayer를 사용하여 여러 입력을 결합하려고합니다. 모든 입력이 동일한 유형 및 모양을 갖는 한 훌륭하게 작동합니다. 나는 결국 단일 스칼라 출력 값을 생성 할 세 가지 유형의 입력을 갖는다.다른 모양 입력으로 ConcatLayer를 사용하려고 시도했습니다.

  • 첫 번째 입력들은 기준 (288,1001)

  • 제 2 입력은 길이 87

  • 번째의 벡터 단일 스칼라 값이다의 이미지

첫 번째 입력에서 Conv2DLayer (s)를 사용하고 있습니다. 두 번째 입력은 Conv1DLayer 또는 DenseLayer를 사용합니다. (어떤 일이 발생했는지 충분히 알 수 없으므로 어느 것이 더 나을지 확실하지 않습니다.) 세 번째 입력을 설정하는 방법이 단 하나 가치 나는 네트워크에 영향을주고 싶다.

코드가 함께 ConcatLayer에서 불면 : 이 '불일치가 : 입력 모양을 제외하고 동일해야 연결 축'

사람이 슈퍼 간단한 네트워크 구조를 쓸 수 있다면 영원히 감사 할 것 이러한 유형의 입력을 받아 단일 스칼라 값을 출력 할 수 있습니다. 나는 하루 종일 인터넷 검색을 해왔고 단순히이 것을 파악할 수 없습니다.

X = {'base_input': X_base, 'header_input': X_headers, 'time_input':X_time} 
net.fit(X, y) 

답변

1

제대로 질문에 대답하기 어렵다 : 당신은 내가 입력의 각 유형에 대한 항목과 사전을 입력하고 볼 수 알고 도움이 경우

착용감 기능은 다음과 같습니다 왜냐하면 - 그것은 달려 있습니다. 당신이하려는 일과 당신이 일하고있는 데이터에 대한 정보가 없다면, 우리는 여기서 추측하는 게임을하고 있습니다. 그래서 나는 일반적인 조언을해주어야합니다.

먼저 ConcatLayer가 불평한다는 것은 완전히 합리적입니다. 이미지의 픽셀 값에 스칼라를 추가하는 것은 의미가 없습니다. 따라서 실제로 원하는 것을 생각해야합니다. 이것은 세 가지 출처의 정보를 결합한 것 같습니다.

2D 컨볼 루션으로 이미지를 처리하고 1D 컨볼 루션으로 시퀀스 데이터를 처리하는 것이 좋습니다. 스칼라 값을 생성하려면 나중에 밀도가 높은 레이어를 사용하여 정보를 압축해야합니다. 그래서 세 가지 분기의 하위 수준 처리를 독립적으로 유지 한 다음 나중에 연결할 수 있습니다. 의 라인을 따라

뭔가 :

Image -> conv -> ... -> conv -> dense -> ... -> dense -> imValues 
Timeseries -> conv -> ... -> conv -> dense ... -> dense -> seriesValues 
concatLayer([imValues, seriesValues, Scalar] -> dense -> ... -> dense with num_units=1 

또 다른 덜 자주 합리적인 옵션이 될 것이다는, 이미지의 저수준 처리에 정보를 추가합니다. 스칼라/타임리스트에 대한 지식이 주어지면 로컬 처리가 훨씬 쉬워지면이 사실을 이해할 수 있습니다. 당신이 거의 확실 첫 번째 옵션으로 가고 싶어합니다

concatLayer(seriesValues, scalar) -> dense -> ... -> reshape((-1, N, 1, 1)) 
    -> Upscale2DLayer(Image.shape[2:3]) -> globalInformation 
concatLayer([globalInformation, Image]) -> 2D conv filtersize=1 -> conv -> ... -> conv 

참고 :

이 아키텍처는 것처럼 보일 수 있습니다.

내가 상관하지 않는 한 가지는 입력 이미지의 거대한 크기입니다. 크기를 줄여야합니다 (크기 조정/패치). 엄청난 양의 데이터와 메모리 및 컴퓨팅 능력을 보유하고 있지 않다면 하드웨어를 과도하게 사용하거나 낭비하게됩니다.

+0

DenseLayer로 재구성 할 수있는 이유가 없습니다. 라이브러리가 병합을 수행 할 수있는 방법을 가지고 있다고 생각하고 있었지만, 더 많은 성찰을 통해 그러한 프로세스가 합리적인 기본값으로 일반화 될 수 없다는 것을 깨달았습니다. 그렇다면 재 형성에 필요한 레이어를 제공해야한다는 것을 분명히했습니다. 귀하의 매우 유용한 답변 주셔서 감사합니다! – Beaker