neon
neon copied to clipboard
Error serializing model when a layer is initialized by Array or Constant
Code snippet
# pretrained_vectors is a numpy ndarray of size 10000 x 300
init_pretrained = Array(pretrained_vectors)
layers = [
# No error
# LookupTable(vocab_size=10000, embedding_dim=300, init=GlorotUniform()),
# Error
LookupTable(vocab_size=10000, embedding_dim=300, init=init_pretrained),
...]
model = Model(layers=layers)
When using GlorotUniform()
for init, there is no error when serializing the model. But using Array
causes these errors after the first epoch, when neon is trying to serialize:
File "./classify_clp.py", line 347, in <module>
model.fit(train_set, optimizer=optimizer, num_epochs=args.epochs, cost=cost, callbacks=callbacks)
File "/usr/local/lib/python2.7/dist-packages/neon/models/model.py", line 151, in fit
callbacks.on_epoch_end(self.epoch_index)
File "/usr/local/lib/python2.7/dist-packages/neon/callbacks/callbacks.py", line 269, in on_epoch_end
c.on_epoch_end(self.callback_data, self.model(), epoch)
File "/usr/local/lib/python2.7/dist-packages/neon/callbacks/callbacks.py", line 494, in on_epoch_end
save_obj(model.serialize(keep_states=True), self.save_path)
File "/usr/local/lib/python2.7/dist-packages/neon/models/model.py", line 406, in serialize
pdict = self.get_description(get_weights=True, keep_states=keep_states)
File "/usr/local/lib/python2.7/dist-packages/neon/models/model.py", line 292, in get_description
keep_states=keep_states)
File "/usr/local/lib/python2.7/dist-packages/neon/layers/container.py", line 77, in get_description
keep_states=keep_states))
File "/usr/local/lib/python2.7/dist-packages/neon/layers/layer.py", line 518, in get_description
serial_dict = super(ParameterLayer, self).get_description()
File "/usr/local/lib/python2.7/dist-packages/neon/layers/layer.py", line 241, in get_description
return super(Layer, self).get_description(**kwargs)
File "/usr/local/lib/python2.7/dist-packages/neon/__init__.py", line 111, in get_description
config[arg] = self.__dict__[arg].get_description()
File "/usr/local/lib/python2.7/dist-packages/neon/initializers/initializer.py", line 57, in get_description
desc = super(Array, self).get_description()
File "/usr/local/lib/python2.7/dist-packages/neon/__init__.py", line 109, in get_description
if self.__dict__[arg] != defaults[arg]:
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()