Exemple #1
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)


	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)
Exemple #2
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)