If you have a weight vector and take multiple different vector random projections of that data you can use those as weights instead for a neural network.

The price you pay is Gaussian noise term that limits the numerical precision of your new enlarged weight set.

However with the correct training algorithm some of the weights can be very high precision at the expense of making others less precise (higher Gaussian noise.)

Vector random projections can be invertible if your training algorithm needs that (probably unless you are using evolution.)

Also you can use the same idea for other algorithms than could benefit from variable precision parameters.

Fast random projection code:

https://github.com/S6Regen/NativeJavaWHT

You can create an inverse random projection by changing the order of the operations in the random projection code.

The price you pay is Gaussian noise term that limits the numerical precision of your new enlarged weight set.

However with the correct training algorithm some of the weights can be very high precision at the expense of making others less precise (higher Gaussian noise.)

Vector random projections can be invertible if your training algorithm needs that (probably unless you are using evolution.)

Also you can use the same idea for other algorithms than could benefit from variable precision parameters.

Fast random projection code:

https://github.com/S6Regen/NativeJavaWHT

You can create an inverse random projection by changing the order of the operations in the random projection code.