Как перевести этот код с лазаньи на модель керас? - PullRequest
0 голосов
/ 11 апреля 2019

Я пытаюсь перевести код в https://github.com/YerevaNN/Spoken-language-identification/blob/master/theano/networks/tc_net_rnn_onernn.py, который написан лазанью, в мою модель в керасе.

Моя модель в керасе на данный момент

input1 = Input(shape=input_shape_stft)

conv1=Conv2D(16, kernel_size=(7,7), strides=1, activation='relu')(input1)
pool1=MaxPooling2D(pool_size=(3,3), strides=2)(conv1)

conv2=Conv2D(32, kernel_size=(5,5), strides=1, activation='relu')(pool1)
pool2=MaxPooling2D(pool_size=(3,3), strides=2)(conv2)

conv3=Conv2D(32, kernel_size=(3,3), strides=1, activation='relu')(pool2)
pool3=MaxPooling2D(pool_size=(3,3), strides=2)(conv3)

conv4=Conv2D(32, kernel_size=(3,3), strides=1, activation='relu')(pool3)
pool4=MaxPooling2D(pool_size=(3,3), strides=2)(conv4)

permute=Permute((3,1,2))(pool4)

и я пытаюсь добавить этот код

network = layers.MaxPool2DLayer(incoming=network, pool_size=(3, 3), stride=2, pad=2)

output = layers.get_output(network)
output = output.transpose((0, 3, 1, 2))
########up to here it is my code###########

output = output.flatten(ndim=3)

        # NOTE: these constants are shapes of last pool layer, it can be symbolic 
        # explicit values are better for optimizations
num_channels = 32 
filter_W = 54
filter_H = 8


        # InputLayer       
network = layers.InputLayer(shape=(None, filter_W, num_channels * filter_H), input_var=output)

        # GRULayer
network = layers.GRULayer(incoming=network, num_units=self.num_units, only_return_final=True)

        # Last layer: classification
network = layers.DenseLayer(incoming=network, num_units=176, nonlinearity=softmax)

но меня очень смущают различия (от theano до тензорного потока) и слои Transpose и Flatten от Лазаньи до Кераса.

Кто написал код, предоставьте также этот образ архитектуры https://github.com/YerevaNN/yerevann.github.io/blob/master/public/2016-06-26/cnn-one-rnn.png

Спасибо.

...