mlech26l/ncps

'NoneType' object cannot be interpreted as an integer`

CodingWookie opened this issue · 1 comments

Hey everyone, I am trying to implement NCP for a time series model, defined below.

`class Model:
def init(self,model_name,x_train):
self.model_name = model_name
self.model = self.buildModel(x_train)
print("> New model initialized: ",model_name)

def buildModel(self,x_train):
    ncp_wiring = kncp.wirings.NCP(
    inter_neurons=20,  # Number of inter neurons
    command_neurons=10,  # Number of command neurons
    motor_neurons=5,  # Number of motor neurons
    sensory_fanout=4,  # How many outgoing synapses has each sensory neuron
    inter_fanout=5,  # How many outgoing synapses has each inter neuron
    recurrent_command_synapses=6,  # Now many recurrent synapses are in the    # command neuron layer
    motor_fanin=4,)  # How many incoming synapses has each motor neuron    )
    # Overwrite some of the initialization ranges
    ncp_cell = LTCCell(ncp_wiring,initialization_ranges={ "w": (0.2, 2.0),},)  
    height, width, channels = (78, 200, 3)
    model = Sequential()
    x = len(x_train[0])

    model.add(LSTM(256,input_shape=((1,x)), return_sequences = True, activation = "relu"))
    model.add(Dropout(0.2))
    model.add(BatchNormalization())

    model.add(LSTM(128, input_shape=((1, x)), return_sequences=True, activation="relu"))
    model.add(Dropout(0.2))
    model.add(BatchNormalization())

    model.add(LSTM(128, input_shape=((1, x)), activation="relu"))
    model.add(Dropout(0.2))
    model.add(BatchNormalization())
    
    model.add(RNN(ltc_cell))
    
    model.add(Dense(32, activation="relu"))
    model.add(Dropout(0.2))

    model.add(Dense(2, activation="softmax"))
    #model.add(keras.layers.RNN(ncp_cell,return_sequences=True))
   
    optimizer = tf.keras.optimizers.Adam(lr = 0.001, decay = 1e-6)
    model.compile(loss="sparse_categorical_crossentropy",optimizer=optimizer)

    return model`

I then get the following error,

`File "F:\Dropbox\AIML EDUCATION\AIMLEDUCATION\Model.py", line 19, in init
self.model = self.buildModel(x_train)

File "F:\Dropbox\AIML EDUCATION\AIMLEDUCATION\Model.py", line 51, in buildModel
model.add(RNN(ltc_cell))
File "C:\Users\Denis\anaconda3\envs\tf1\lib\site-
packages\tensorflow\python\training\tracking\base.py", line 530, in _method_wrapper
result = method(self, *args, **kwargs)

File "C:\Users\Denis\anaconda3\envs\tf1\lib\site-packages\keras\engine\sequential.py", line 217, in add
output_tensor = layer(self.outputs[0])

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

File "C:\Users\Denis\anaconda3\envs\tf1\lib\site-packages\keras\engine\base_layer.py", line 977, in call
input_list)

File "C:\Users\Denis\anaconda3\envs\tf1\lib\site-packages\keras\engine\base_layer.py", line 1115, in _functional_construction_call inputs, input_masks, args, kwargs)

File "C:\Users\Denis\anaconda3\envs\tf1\lib\site-packages\keras\engine\base_layer.py", line 848, in _keras_tensor_symbolic_call return self._infer_output_signature(inputs, args, kwargs, input_masks)

File "C:\Users\Denis\anaconda3\envs\tf1\lib\site-packages\keras\engine\base_layer.py", line 886, in _infer_output_signature
self._maybe_build(inputs)

File "C:\Users\Denis\anaconda3\envs\tf1\lib\site-packages\keras\engine\base_layer.py", line 2659, in _maybe_build
self.build(input_shapes) # pylint:disable=not-callable

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

File "C:\Users\Denis\anaconda3\envs\tf1\lib\site-packages\kerasncp\tf\ltc_cell.py", line 131, in build
self._wiring.build(input_dim)

File "C:\Users\Denis\anaconda3\envs\tf1\lib\site-packages\kerasncp\wirings\wirings.py", line 150, in build
super().build(input_shape)

File "C:\Users\Denis\anaconda3\envs\tf1\lib\site-packages\kerasncp\wirings\wirings.py", line 44, in build
self.set_input_dim(input_dim)

File "C:\Users\Denis\anaconda3\envs\tf1\lib\site-packages\kerasncp\wirings\wirings.py", line 55, in set_input_dim
[input_dim, self.units], dtype=np.int32

TypeError: 'NoneType' object cannot be interpreted as an integer`

Any help would be appreciated.

Hi,

Your code does not include the definition of the variable ltc_cell. How did you define it?