Not OP. This question is being reposted to preserve technical content removed from elsewhere. Feel free to add your own answers/discussion.

Original question:

I have a dataset that contains vectors of shape 1xN where N is the number of features. For each value, there is a float between -4 and 5. For my project I need to make an autoencoder, however, activation functions like ReLU or tanh will either only allow positive values through the layers or within -1 and 1. My concern is that upon decoding from the latent space the data will not be represented in the same way, I will either get vectors with positive values only or constrained negative values while I want it to be close to the original.

Should I apply some kind of transformation like adding a positive constant value, exp() or raise data to power 2, train VAE, and then if I want original representation I just log() or log2() the output? Or am I missing some configuration with activation functions that can give me an output similar to the original input?

        • ShadowAetherOPM
          link
          fedilink
          arrow-up
          3
          ·
          2 years ago

          Ya, go ahead. Atm I’m just pulling old answers that I’ve deleted from reddit or cross validated. I’ll probably do some underappreciated/hard to find answers as well

          • manitcor@lemmy.intai.tech
            link
            fedilink
            arrow-up
            3
            ·
            edit-2
            2 years ago

            this is the real work we need right now, one of the biggest complaints is the searchability of usable content on reddit (lemmy does not have much), we know the answer to that.

            I have a list of AI/ML folks I am following an posting fresh research, we are using bots to summarize the work as well. Feel free to repost with abandon as well.

            • ShadowAetherOPM
              link
              fedilink
              arrow-up
              3
              ·
              2 years ago

              I think more of the traffic comes from google search results (that’s what people say they use) and there’s not much that can be changed there.

              Imo there is too much noise in the ML research publishing atm, certainly with deep learning (throw an NN at something and it seems like you can get anything published nowadays) and the papers aren’t very helpful (they rarely have enough info to be reproducible) but I digress. Plus paywalls can be a problem. If you want the more solid stuff for deep learning, I would suggest something like: paperswithcode.com/ But I spend most of my time sorting through papers so not an unbiased opinion at all

              • manitcor@lemmy.intai.tech
                link
                fedilink
                arrow-up
                3
                ·
                2 years ago

                Feels, integrated AI started as a shared google doc of links for some projects i was on, realized I had figured out how to wadge through papers and get usable stuff still (used to do similar for industrial robotics years ago).

                My hope is as our domains age we can play SEO games and get our instances in the results. Make them look at us on every page!

  • ShadowAetherOPM
    link
    fedilink
    arrow-up
    3
    ·
    2 years ago

    Original answer:

    Scaling the dataset before passing it to the autoencoder is usually how I do it, you don’t need to rescale after if you are only using the encoder portion (for example for dimensionality reduction). If you don’t do it linearly (aka (x-min(x))/(max(x)-min(x) ) and use exp or log to do it then be mindful that it would likely have an impact with respect to loss/optimization behaviour.

    Make sure to take the max and min values from the training data then apply it to the testing (in the case of values out of bounds, set them to the boundary value but this shouldn’t have a big impact if your training dataset is large enough with enough variance).