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