def create_output_node(model=None, input_sequences=None, num_gru=None, old_h0s=None, reset=None, num_pixelCNN_layer = None): assert(model is not None) assert(input_sequences is not None) assert(num_gru is not None) assert(old_h0s is not None) assert(reset is not None) assert(num_pixelCNN_layer is not None) new_h0s = T.zeros_like(old_h0s) h0s = theano.ifelse.ifelse(reset, new_h0s, old_h0s) for i in range(num_gru): gru_layer = GRU(DIM, DIM, last_layer, s0 = h0s[i,:,:], name = model.name+"GRU_{}".format(i)) last_hidden_list.append(gru_layer.output()[:,-1]) model.add_layer(gru_layer) last_layer = gru_layer fc1 = FC(DIM, Q_LEVELS, last_layer, name = model.name+"FullyConnected") model.add_layer(fc1) softmax = Softmax(fc1, name= model.name+"Softmax") model.add_layer(softmax) return softmax.output(), T.stack(last_hidden_list, axis = 0)
def create_output_node(model=None, input_sequences=None, num_gru=None, old_h0s=None, reset=None, num_pixelCNN_layer = None): assert(model is not None) assert(input_sequences is not None) assert(num_gru is not None) assert(old_h0s is not None) assert(reset is not None) assert(num_pixelCNN_layer is not None) new_h0s = T.zeros_like(old_h0s) h0s = theano.ifelse.ifelse(reset, new_h0s, old_h0s) embedding_layer = Embedding(Q_LEVELS, DIM, input_sequences, name = model.name+"Embedding.Q_LEVELS") model.add_layer(embedding_layer) prev_out = embedding_layer.output() last_layer = WrapperLayer(prev_out.reshape((prev_out.shape[0], prev_out.shape[1], WIDTH, DEPTH))) pixel_CNN = pixelConv( last_layer, DEPTH, DEPTH, name = model.name + ".pxCNN", num_layers = NUM_PIXEL_CNN_LAYER ) prev_out = pixel_CNN.output() last_layer = WrapperLayer(prev_out.reshape((prev_out.shape[0], prev_out.shape[1], -1))) last_hidden_list = [] for i in range(num_gru): gru_layer = GRU(DIM, DIM, last_layer, s0 = h0s[i,:,:], name = model.name+"GRU_{}".format(i)) last_hidden_list.append(gru_layer.output()[:,-1]) model.add_layer(gru_layer) last_layer = gru_layer fc1 = FC(DIM, Q_LEVELS, last_layer, name = model.name+"FullyConnected") model.add_layer(fc1) softmax = Softmax(fc1, name= model.name+"Softmax") model.add_layer(softmax) return softmax.output(), T.stack(last_hidden_list, axis = 0)