February 2018
Intermediate to advanced
262 pages
6h 59m
English
Let's look at the network architecture and then walk through the code:
class IMDBCnn(nn.Module): def __init__(self,vocab,hidden_size,n_cat,bs=1,kernel_size=3,max_len=200): super().__init__() self.hidden_size = hidden_size self.bs = bs self.e = nn.Embedding(n_vocab,hidden_size) self.cnn = nn.Conv1d(max_len,hidden_size,kernel_size) self.avg = nn.AdaptiveAvgPool1d(10) self.fc = nn.Linear(1000,n_cat) self.softmax = nn.LogSoftmax(dim=-1) def forward(self,inp): bs = inp.size()[0] if bs != self.bs: self.bs = bs e_out = self.e(inp) cnn_o = self.cnn(e_out) cnn_avg = self.avg(cnn_o) cnn_avg = cnn_avg.view(self.bs,-1) fc = F.dropout(self.fc(cnn_avg),p=0.5) return self.softmax(fc)
In the preceding code, instead of an LSTM layer ...