Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function mycnn(char_dim, num_widths, basic_width, dw, seq_length, c2w_seq_length, c2w_dropout, batch_size)
- local inputs = {}
- local outputs = {}
- table.insert(inputs, nn.Identity()())
- local conv1, _conv1, mp1, _mp1, proj, _proj = {}, {}, {}, {}, {}, {}
- for i = 1, num_widths do
- local nkernels = math.min(200, basic_width * i)
- -- input : seq_length*batch_size X c2w_seq_length X char_dim
- --conv1[i] = nn.TemporalConvolutionFB(char_dim, nkernels, i, dw)(inputs[1])
- local input = nn.View(1, -1, char_dim):setNumInputDims(2)(inputs[1])
- conv1[i] = cudnn.SpatialConvolution(1, nkernels, char_dim, i)(input)
- -- output : seq_length*batch_size X [(c2w_seq_length - i + 1) / dw + 1] X nkernels
- _conv1[i] = nn.Tanh()(conv1[i])
- --mp1[i] = nn.TemporalMaxPooling( outputFrame(c2w_seq_length, i, dw), dw )(_conv1[i])
- mp1[i] = cudnn.SpatialMaxPooling(1, outputFrame(c2w_seq_length, i, dw))(_conv1[i])
- -- output : seq_length*batch_size X 1 X nkernels
- --_mp1[i] = nn.Reshape(seq_length*batch_size, nkernels)(mp1[i])
- _mp1[i] = nn.Squeeze()(mp1[i])
- --_proj[i] = nn.Dropout(c2w_dropout)(_mp1[i]) -- TODO : add dropout?
- table.insert(outputs, _mp1[i])
- end
- local real_output = nn.JoinTable(2)(outputs)
- local module = nn.gModule(inputs, {real_output})
- return transfer_data(module)
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement