2016-08-07 1 views
0

1D conv net을 Torch을 통해 매개 변수화하려고합니다.토치의 임시 회선 이해

의 내가 있다는 점에서 10 행과 512 열이있다, 치수 10 x 512의 인 Tensor라는 data 있다고 가정 해 봅시다. 따라서 TemporalConvolution 레이어의 단일 3 레이어 스택을 구현하고 ReLU 다음에 TemporalMaxPooling이 뒤 따르는 레이어를 구현하고 싶습니다. 저의 분류 문제는 이진이며, 대응하는 labels 텐서가 있습니다 (10 x 1). feval으로 이미 row을 반복하여 datalabels에 모두 있다고 가정합니다. 이와 같이

이 문제가 documentation에서 적응 1

까지 512 열에서 매핑 할 수 있습니다 그물을 구축하는 것입니다, 다음과 같이 내가 그것을 매개 변수화 한

... 
model = nn.Sequential() 
model:add(nn.TemporalConvolution(inputFrameSize, outputFrameSize, kW, [dW])) 
model:add(nn.ReLU()) 
model:add(nn.TemporalMaxPooling(kW2, [dW2]) 
... 
criterion = nn.BCECriterion() 
... 

을하지만, 다음은 작동하지 않습니다./

TemporalConvolution(512,1,3,1) 
ReLU()) 
TemporalMaxPooling(3, 1) 

오류 : 2D or 3D(batch mode) tensor expected이 발생합니다.

data = data:resize(1, 100, 512) 

을하지만이 오류가 발생합니다 : 결과적으로 나는 그물에 전달하기 전에 data을 바꿀려고 invalid input frame size.


나는 오류가 데이터의 형태에 관한 것을 전환 그물에와 파라미터 설정도 물론 오는 것을 볼 수 있습니다. 나는 this post here에 의해 더 혼란스러워서 inputFrameSizeTemporalConvolution10이 아니라 512으로 설정되어야한다고 제안하는 것으로 보인다.

1D 전환 네트워크를 구축하는 방법에 관해서는 모든 안내가 도움이 될 것입니다.


P.logisticRegression 모델을 사용하여 스크립트를 테스트했는데 문제가 순전히 conv net 아키텍처/들어오는 데이터의 모양과 같습니다.

답변

0

입력의 seqlen이 아닌 n_channels (예 : 2d-convlution의 경우 512 * 512 RGB 이미지의 경우 inputFrameSize는 512가 아닌 3) 여야한다는 의미를 오해 할 것입니다.