Keras LSTM TypeError: Zeros() takes no arguments

Viewed 129

I'm trying to reproduce this study, especially the va-rnn. I have an error in this function, in the line with LSTM

def creat_model(input_shape, num_class):

    init = initializers.Orthogonal(gain=args.norm)
    sequence_input =Input(shape=input_shape)
    mask = Masking(mask_value=0.)(sequence_input)
    if args.aug:
        mask = augmentaion()(mask)
    X = Noise(0.075)(mask)
    if args.model[0:2]=='VA':
        # VA
        trans = LSTM(args.nhid,recurrent_activation='sigmoid',return_sequences=True,implementation=2,recurrent_initializer=init)(X)
        trans = Dropout(0.5)(trans)
        trans = TimeDistributed(Dense(3,kernel_initializer='zeros'))(trans)
        rot = LSTM(args.nhid,recurrent_activation='sigmoid',return_sequences=True,implementation=2,recurrent_initializer=init)(X)
        rot = Dropout(0.5)(rot)
        rot = TimeDistributed(Dense(3,kernel_initializer='zeros'))(rot)
        transform = Concatenate()([rot,trans])
        X = VA()([mask,transform])

    X = LSTM(args.nhid,recurrent_activation='sigmoid',return_sequences=True,implementation=2,recurrent_initializer=init)(X)
    X = Dropout(0.5)(X)
    X = LSTM(args.nhid,recurrent_activation='sigmoid',return_sequences=True,implementation=2,recurrent_initializer=init)(X)
    X = Dropout(0.5)(X)
    X = LSTM(args.nhid,recurrent_activation='sigmoid',return_sequences=True,implementation=2,recurrent_initializer=init)(X)
    X = Dropout(0.5)(X)
    X = TimeDistributed(Dense(num_class))(X)
    X = MeanOverTime()(X)
    X = Activation('softmax')(X)

    model=Model(sequence_input,X)
    return model

This is the traceback

Traceback (most recent call last):

  File "B:\Stage\skeleton2\va-rnn.py", line 124, in <module>
    main(rootdir, args.case, results)

  File "B:\Stage\skeleton2\va-rnn.py", line 93, in main
    model = creat_model(input_shape, num_class)

  File "B:\Stage\skeleton2\va-rnn.py", line 58, in creat_model
    trans = LSTM(args.nhid,recurrent_activation='sigmoid',return_sequences=True,implementation=2,recurrent_initializer=init)(X)

  File "C:\Users\Users\anaconda3\envs\myenv\lib\site-packages\keras\layers\recurrent.py", line 482, in __call__
    return super(RNN, self).__call__(inputs, **kwargs)

  File "C:\Users\Users\anaconda3\envs\myenv\lib\site-packages\keras\engine\topology.py", line 576, in __call__
    self.build(input_shapes[0])

  File "C:\Users\Users\anaconda3\envs\myenv\lib\site-packages\keras\layers\recurrent.py", line 444, in build
    self.cell.build(step_input_shape)

  File "C:\Users\Users\anaconda3\envs\myenv\lib\site-packages\keras\layers\recurrent.py", line 1734, in build
    self.bias = self.add_weight(shape=(self.units * 4,),

  File "C:\Users\Users\anaconda3\envs\myenv\lib\site-packages\keras\legacy\interfaces.py", line 87, in wrapper
    return func(*args, **kwargs)

  File "C:\Users\Users\anaconda3\envs\myenv\lib\site-packages\keras\engine\topology.py", line 397, in add_weight
    weight = K.variable(initializer(shape),

  File "C:\Users\Users\anaconda3\envs\myenv\lib\site-packages\keras\layers\recurrent.py", line 1728, in bias_initializer
    self.bias_initializer((self.units,), *args, **kwargs),

TypeError: Zeros() takes no arguments

Here are my imports

import numpy as np
import os
os.environ['KERAS_BACKEND'] = 'theano'
os.environ["CUDA_VISIBLE_DEVICES"] = str(args.gpu)

from keras import initializers
from keras.optimizers import Adam
from keras.models import Model
from keras.layers import Input, Dropout, LSTM, Dense,Activation,TimeDistributed,Masking,Concatenate
from keras.callbacks import EarlyStopping,CSVLogger,ReduceLROnPlateau, ModelCheckpoint
from transform_rnn import VA, Noise,MeanOverTime, augmentaion
from data_rnn import  get_data, get_cases, get_activation

I'm using python 3.9 in spyder (anaconda). I've tested this code with keras 2.2.2 and 2.1.2

I don't know what to do.

Can someone help me please ? :)

Thanks

0 Answers
Related