zoo.models.seq2seq package

Submodules

zoo.models.seq2seq.seq2seq module

class zoo.models.seq2seq.seq2seq.Bridge(bridge_type, decoder_hidden_size, bridge)[source]

Bases: zoo.pipeline.api.keras.base.ZooKerasLayer

defines how to transform encoder to decoder

# Arguments bridge_type: currently only support “dense | densenonlinear” decoder_hiddenSize: hidden size of decoder bridge: keras layers used to do the transformation

>>> bridge = Bridge.initialize("dense", 2)
creating: createZooKerasBridge
>>> dense = Dense(3)
creating: createZooKerasDense
>>> bridge = Bridge.initialize_from_keras_layer(dense)
creating: createZooKerasBridge
classmethod initialize(bridge_type, decoder_hidden_size)[source]

bridge_type: currently only support “dense | densenonlinear” decoder_hiddenSize: hidden size of decoder

classmethod initialize_from_keras_layer(bridge)[source]

bridge: keras layers used to do the transformation

class zoo.models.seq2seq.seq2seq.RNNDecoder(rnns, embedding=None, input_shape=None)[source]

Bases: zoo.pipeline.api.keras.base.ZooKerasLayer

A generic recurrent neural network decoder

# Arguments rnns: rnn layers used for decoder, support stacked rnn layers embedding: embedding layer in decoder input_shape: shape of input, not including batch

>>> decoder = RNNDecoder.initialize("lstm", 2, 3)
creating: createZooKerasLSTM
creating: createZooKerasLSTM
creating: createZooKerasRNNDecoder
>>> lstm = LSTM(3)
creating: createZooKerasLSTM
>>> embedding = Embedding(1000, 32, input_length=10, name="embedding1")
creating: createZooKerasEmbedding
>>> encoder = RNNDecoder([lstm], embedding)
creating: createZooKerasRNNDecoder
classmethod initialize(rnn_type, nlayers, hidden_size, embedding=None, input_shape=None)[source]

rnn_type: currently support “simplernn | lstm | gru” nlayers: number of layers used in decoder hidden_size: hidden size of decoder embedding: embedding layer in decoder, None is supported

class zoo.models.seq2seq.seq2seq.RNNEncoder(rnns, embedding=None, input_shape=None)[source]

Bases: zoo.pipeline.api.keras.base.ZooKerasLayer

A generic recurrent neural network encoder

# Arguments rnns: rnn layers used for encoder, support stacked rnn layers embedding: embedding layer in encoder input_shape: shape of input, not including batch

>>> encoder = RNNEncoder.initialize("lstm", 2, 3)
creating: createZooKerasLSTM
creating: createZooKerasLSTM
creating: createZooKerasRNNEncoder
>>> lstm = LSTM(3)
creating: createZooKerasLSTM
>>> embedding = Embedding(1000, 32, input_length=10, name="embedding1")
creating: createZooKerasEmbedding
>>> encoder = RNNEncoder([lstm], embedding)
creating: createZooKerasRNNEncoder
classmethod initialize(rnn_type, nlayers, hidden_size, embedding=None, input_shape=None)[source]

rnn_type: currently support “simplernn | lstm | gru” nlayers: number of layers used in encoder hidden_size: hidden size of encoder embedding: embedding layer in encoder, None is supported

class zoo.models.seq2seq.seq2seq.Seq2seq(encoder, decoder, input_shape, output_shape, bridge=None, generator=None, bigdl_type='float')[source]

Bases: zoo.models.common.zoo_model.ZooModel

A trainable interface for a simple, generic encoder + decoder model

# Arguments encoder: an encoder object decoder: a decoder object input_shape: shape of encoder input, for variable length, please use -1 as seq len output_shape: shape of decoder input, for variable length, please use -1 as seq len bridge: connect encoder and decoder generator: Feeding decoder output to generator to generate final result, None is supported

>>> encoder = RNNEncoder.initialize("LSTM", 1, 4)
creating: createZooKerasLSTM
creating: createZooKerasRNNEncoder
>>> decoder = RNNDecoder.initialize("LSTM", 1, 4)
creating: createZooKerasLSTM
creating: createZooKerasRNNDecoder
>>> bridge = Bridge.initialize("dense", 4)
creating: createZooKerasBridge
>>> seq2seq = Seq2seq(encoder, decoder, [2, 4], [2, 4], bridge)
creating: createZooKerasInput
creating: createZooKerasInput
creating: createZooKerasSelectTable
creating: createZooKerasModel
creating: createZooSeq2seq
build_model()[source]
compile(optimizer, loss, metrics=None)[source]
fit(x, batch_size=32, nb_epoch=10, validation_data=None)[source]
infer(input, start_sign, max_seq_len=30, stop_sign=None, build_output=None)[source]

Inference API for given input

# Arguments input: a sequence of data feed into encoder, eg: batch x seqLen x featureSize start_sign: a ndarray which represents start and is fed into decoder max_seq_len: max sequence length for final output stop_sign: a ndarray that indicates model should stop infer further if current output is the same with stopSign build_output: Feeding model output to buildOutput to generate final result

static load_model(path, weight_path=None, bigdl_type='float')[source]

Load an existing Seq2seq model (with weights).

# Arguments path: The path for the pre-defined model.

Local file system, HDFS and Amazon S3 are supported. HDFS path should be like ‘hdfs://[host]:[port]/xxx’. Amazon S3 path should be like ‘s3a://bucket/xxx’.

weight_path: The path for pre-trained weights if any. Default is None.

set_checkpoint(path, over_write=True)[source]
zoo.models.seq2seq.seq2seq.createRNN(rnn_type, nlayers, hidden_size)[source]

Module contents