| 124 | |
| 125 | |
| 126 | class PTB_Net(Model): |
| 127 | |
| 128 | def __init__(self, vocab_size, hidden_size, init, keep): |
| 129 | super(PTB_Net, self).__init__() |
| 130 | |
| 131 | self.embedding = tl.layers.Embedding(vocab_size, hidden_size, init) |
| 132 | self.dropout1 = tl.layers.Dropout(keep=keep) |
| 133 | self.lstm1 = tl.layers.RNN( |
| 134 | cell=tf.keras.layers.LSTMCell(hidden_size), return_last_output=False, return_last_state=True, |
| 135 | return_seq_2d=False, in_channels=hidden_size |
| 136 | ) |
| 137 | self.dropout2 = tl.layers.Dropout(keep=keep) |
| 138 | self.lstm2 = tl.layers.RNN( |
| 139 | cell=tf.keras.layers.LSTMCell(hidden_size), return_last_output=False, return_last_state=True, |
| 140 | return_seq_2d=True, in_channels=hidden_size |
| 141 | ) |
| 142 | self.dropout3 = tl.layers.Dropout(keep=keep) |
| 143 | self.out_dense = tl.layers.Dense(vocab_size, in_channels=hidden_size, W_init=init, b_init=init, act=None) |
| 144 | |
| 145 | def forward(self, inputs, lstm1_initial_state=None, lstm2_initial_state=None): |
| 146 | inputs = self.embedding(inputs) |
| 147 | inputs = self.dropout1(inputs) |
| 148 | lstm1_out, lstm1_state = self.lstm1(inputs, initial_state=lstm1_initial_state) |
| 149 | inputs = self.dropout2(lstm1_out) |
| 150 | lstm2_out, lstm2_state = self.lstm2(inputs, initial_state=lstm2_initial_state) |
| 151 | inputs = self.dropout3(lstm2_out) |
| 152 | logits = self.out_dense(inputs) |
| 153 | return logits, lstm1_state, lstm2_state |
| 154 | |
| 155 | |
| 156 | def main(): |
no outgoing calls
no test coverage detected
searching dependent graphs…