how to train a muliti-input and multi-output trainsets












0












$begingroup$


now,I have a 3600*119 matrix.3600 means samples,119 means variable numbers.
I hope I can input a [1,1:119] variable, and get the next,[2,1:199],just like it.
the dataset parts:
enter image description here










share|improve this question







New contributor




hellozq is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.







$endgroup$

















    0












    $begingroup$


    now,I have a 3600*119 matrix.3600 means samples,119 means variable numbers.
    I hope I can input a [1,1:119] variable, and get the next,[2,1:199],just like it.
    the dataset parts:
    enter image description here










    share|improve this question







    New contributor




    hellozq is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
    Check out our Code of Conduct.







    $endgroup$















      0












      0








      0





      $begingroup$


      now,I have a 3600*119 matrix.3600 means samples,119 means variable numbers.
      I hope I can input a [1,1:119] variable, and get the next,[2,1:199],just like it.
      the dataset parts:
      enter image description here










      share|improve this question







      New contributor




      hellozq is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.







      $endgroup$




      now,I have a 3600*119 matrix.3600 means samples,119 means variable numbers.
      I hope I can input a [1,1:119] variable, and get the next,[2,1:199],just like it.
      the dataset parts:
      enter image description here







      machine-learning






      share|improve this question







      New contributor




      hellozq is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.











      share|improve this question







      New contributor




      hellozq is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.









      share|improve this question




      share|improve this question






      New contributor




      hellozq is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.









      asked 13 hours ago









      hellozqhellozq

      11




      11




      New contributor




      hellozq is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.





      New contributor





      hellozq is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.






      hellozq is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.






















          1 Answer
          1






          active

          oldest

          votes


















          0












          $begingroup$

          This is totally possible with deep neural networks. You can have an input vector and an output vector. However, your specific case does not have sufficient data to train such a model. With 119 inputs and 119 outputs you will need quite a complex network architecture to capture these mappings. In general I like to have at a very minimum 100 times more instances than features when training a neural network.





          Here is an example of a neural network which can sort numbers, it has 4 input neurons and 4 output neurons.



          from __future__ import print_function
          import keras
          from keras.datasets import mnist
          from keras.models import Sequential
          from keras.layers import Dense, Dropout, Flatten
          from keras.layers import Conv1D, MaxPooling1D, Reshape
          from keras.callbacks import ModelCheckpoint
          from keras.models import model_from_json
          from keras import backend as K


          First we will create some data



          import numpy as np

          n = 100000
          x_train = np.zeros((n,4))
          for i in range(n):
          x_train[i,:] = np.random.permutation(50)[0:4]

          x_train = x_train.reshape(n, 4,)
          y_train = np.sort(x_train, axis=1).reshape(n, 4,)

          n = 10000
          x_test = np.zeros((n,4))
          for i in range(n):
          x_test[i,:] = np.random.permutation(50)[0:4]

          x_test = x_test.reshape(n, 4,)
          y_test = np.sort(x_test, axis=1).reshape(n, 4,)

          print(x_test[0].T)
          print(y_test[0])



          [25. 33. 4. 2.]
          [ 2. 4. 25. 33.]




          Let's make our neural network model



          input_shape = (4,)

          model = Sequential()
          model.add(Dense(32, activation='relu',
          input_shape=input_shape))
          model.add(Dense(32, activation='relu',
          input_shape=input_shape))
          model.add(Dense(32, activation='relu',
          input_shape=input_shape))
          model.add(Dense(4))

          model.compile(loss=keras.losses.mean_squared_error,
          optimizer=keras.optimizers.Adadelta(),
          metrics=['accuracy'])


          Now we train it



          epochs = 20
          batch_size = 512
          # Fit the model weights.
          history = model.fit(x_train, y_train,
          batch_size=batch_size,
          epochs=epochs,
          verbose=1,
          validation_data=(x_test, y_test))


          You can see the progression of the training using



          import matplotlib.pyplot as plt
          %matplotlib inline

          plt.figure(figsize=(20,5))
          # summarize history for accuracy
          plt.subplot(1,2,1)
          plt.plot(history.history['acc'])
          plt.plot(history.history['val_acc'])
          plt.title('model accuracy')
          plt.ylabel('accuracy')
          plt.xlabel('epoch')
          plt.legend(['train', 'validation'], loc='lower right')

          # summarize history for loss
          plt.subplot(1,2,2)
          plt.plot(history.history['loss'])
          plt.plot(history.history['val_loss'])
          plt.title('model loss')
          plt.ylabel('loss')
          plt.xlabel('epoch')
          plt.legend(['train', 'validation'], loc='upper right')
          plt.show()


          enter image description here



          Now we have our model, we can sort new inputs



          np.round(model.predict(np.array([[1,5,2,3]])))



          array([[1., 2., 3., 5.]], dtype=float32)




          np.round(model.predict(np.array([[20,7,24,3]])))



          array([[ 3., 7., 20., 23.]], dtype=float32)







          share|improve this answer









          $endgroup$













            Your Answer





            StackExchange.ifUsing("editor", function () {
            return StackExchange.using("mathjaxEditing", function () {
            StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix) {
            StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["$", "$"], ["\\(","\\)"]]);
            });
            });
            }, "mathjax-editing");

            StackExchange.ready(function() {
            var channelOptions = {
            tags: "".split(" "),
            id: "557"
            };
            initTagRenderer("".split(" "), "".split(" "), channelOptions);

            StackExchange.using("externalEditor", function() {
            // Have to fire editor after snippets, if snippets enabled
            if (StackExchange.settings.snippets.snippetsEnabled) {
            StackExchange.using("snippets", function() {
            createEditor();
            });
            }
            else {
            createEditor();
            }
            });

            function createEditor() {
            StackExchange.prepareEditor({
            heartbeatType: 'answer',
            autoActivateHeartbeat: false,
            convertImagesToLinks: false,
            noModals: true,
            showLowRepImageUploadWarning: true,
            reputationToPostImages: null,
            bindNavPrevention: true,
            postfix: "",
            imageUploader: {
            brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
            contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
            allowUrls: true
            },
            onDemand: true,
            discardSelector: ".discard-answer"
            ,immediatelyShowMarkdownHelp:true
            });


            }
            });






            hellozq is a new contributor. Be nice, and check out our Code of Conduct.










            draft saved

            draft discarded


















            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fdatascience.stackexchange.com%2fquestions%2f46581%2fhow-to-train-a-muliti-input-and-multi-output-trainsets%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown

























            1 Answer
            1






            active

            oldest

            votes








            1 Answer
            1






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes









            0












            $begingroup$

            This is totally possible with deep neural networks. You can have an input vector and an output vector. However, your specific case does not have sufficient data to train such a model. With 119 inputs and 119 outputs you will need quite a complex network architecture to capture these mappings. In general I like to have at a very minimum 100 times more instances than features when training a neural network.





            Here is an example of a neural network which can sort numbers, it has 4 input neurons and 4 output neurons.



            from __future__ import print_function
            import keras
            from keras.datasets import mnist
            from keras.models import Sequential
            from keras.layers import Dense, Dropout, Flatten
            from keras.layers import Conv1D, MaxPooling1D, Reshape
            from keras.callbacks import ModelCheckpoint
            from keras.models import model_from_json
            from keras import backend as K


            First we will create some data



            import numpy as np

            n = 100000
            x_train = np.zeros((n,4))
            for i in range(n):
            x_train[i,:] = np.random.permutation(50)[0:4]

            x_train = x_train.reshape(n, 4,)
            y_train = np.sort(x_train, axis=1).reshape(n, 4,)

            n = 10000
            x_test = np.zeros((n,4))
            for i in range(n):
            x_test[i,:] = np.random.permutation(50)[0:4]

            x_test = x_test.reshape(n, 4,)
            y_test = np.sort(x_test, axis=1).reshape(n, 4,)

            print(x_test[0].T)
            print(y_test[0])



            [25. 33. 4. 2.]
            [ 2. 4. 25. 33.]




            Let's make our neural network model



            input_shape = (4,)

            model = Sequential()
            model.add(Dense(32, activation='relu',
            input_shape=input_shape))
            model.add(Dense(32, activation='relu',
            input_shape=input_shape))
            model.add(Dense(32, activation='relu',
            input_shape=input_shape))
            model.add(Dense(4))

            model.compile(loss=keras.losses.mean_squared_error,
            optimizer=keras.optimizers.Adadelta(),
            metrics=['accuracy'])


            Now we train it



            epochs = 20
            batch_size = 512
            # Fit the model weights.
            history = model.fit(x_train, y_train,
            batch_size=batch_size,
            epochs=epochs,
            verbose=1,
            validation_data=(x_test, y_test))


            You can see the progression of the training using



            import matplotlib.pyplot as plt
            %matplotlib inline

            plt.figure(figsize=(20,5))
            # summarize history for accuracy
            plt.subplot(1,2,1)
            plt.plot(history.history['acc'])
            plt.plot(history.history['val_acc'])
            plt.title('model accuracy')
            plt.ylabel('accuracy')
            plt.xlabel('epoch')
            plt.legend(['train', 'validation'], loc='lower right')

            # summarize history for loss
            plt.subplot(1,2,2)
            plt.plot(history.history['loss'])
            plt.plot(history.history['val_loss'])
            plt.title('model loss')
            plt.ylabel('loss')
            plt.xlabel('epoch')
            plt.legend(['train', 'validation'], loc='upper right')
            plt.show()


            enter image description here



            Now we have our model, we can sort new inputs



            np.round(model.predict(np.array([[1,5,2,3]])))



            array([[1., 2., 3., 5.]], dtype=float32)




            np.round(model.predict(np.array([[20,7,24,3]])))



            array([[ 3., 7., 20., 23.]], dtype=float32)







            share|improve this answer









            $endgroup$


















              0












              $begingroup$

              This is totally possible with deep neural networks. You can have an input vector and an output vector. However, your specific case does not have sufficient data to train such a model. With 119 inputs and 119 outputs you will need quite a complex network architecture to capture these mappings. In general I like to have at a very minimum 100 times more instances than features when training a neural network.





              Here is an example of a neural network which can sort numbers, it has 4 input neurons and 4 output neurons.



              from __future__ import print_function
              import keras
              from keras.datasets import mnist
              from keras.models import Sequential
              from keras.layers import Dense, Dropout, Flatten
              from keras.layers import Conv1D, MaxPooling1D, Reshape
              from keras.callbacks import ModelCheckpoint
              from keras.models import model_from_json
              from keras import backend as K


              First we will create some data



              import numpy as np

              n = 100000
              x_train = np.zeros((n,4))
              for i in range(n):
              x_train[i,:] = np.random.permutation(50)[0:4]

              x_train = x_train.reshape(n, 4,)
              y_train = np.sort(x_train, axis=1).reshape(n, 4,)

              n = 10000
              x_test = np.zeros((n,4))
              for i in range(n):
              x_test[i,:] = np.random.permutation(50)[0:4]

              x_test = x_test.reshape(n, 4,)
              y_test = np.sort(x_test, axis=1).reshape(n, 4,)

              print(x_test[0].T)
              print(y_test[0])



              [25. 33. 4. 2.]
              [ 2. 4. 25. 33.]




              Let's make our neural network model



              input_shape = (4,)

              model = Sequential()
              model.add(Dense(32, activation='relu',
              input_shape=input_shape))
              model.add(Dense(32, activation='relu',
              input_shape=input_shape))
              model.add(Dense(32, activation='relu',
              input_shape=input_shape))
              model.add(Dense(4))

              model.compile(loss=keras.losses.mean_squared_error,
              optimizer=keras.optimizers.Adadelta(),
              metrics=['accuracy'])


              Now we train it



              epochs = 20
              batch_size = 512
              # Fit the model weights.
              history = model.fit(x_train, y_train,
              batch_size=batch_size,
              epochs=epochs,
              verbose=1,
              validation_data=(x_test, y_test))


              You can see the progression of the training using



              import matplotlib.pyplot as plt
              %matplotlib inline

              plt.figure(figsize=(20,5))
              # summarize history for accuracy
              plt.subplot(1,2,1)
              plt.plot(history.history['acc'])
              plt.plot(history.history['val_acc'])
              plt.title('model accuracy')
              plt.ylabel('accuracy')
              plt.xlabel('epoch')
              plt.legend(['train', 'validation'], loc='lower right')

              # summarize history for loss
              plt.subplot(1,2,2)
              plt.plot(history.history['loss'])
              plt.plot(history.history['val_loss'])
              plt.title('model loss')
              plt.ylabel('loss')
              plt.xlabel('epoch')
              plt.legend(['train', 'validation'], loc='upper right')
              plt.show()


              enter image description here



              Now we have our model, we can sort new inputs



              np.round(model.predict(np.array([[1,5,2,3]])))



              array([[1., 2., 3., 5.]], dtype=float32)




              np.round(model.predict(np.array([[20,7,24,3]])))



              array([[ 3., 7., 20., 23.]], dtype=float32)







              share|improve this answer









              $endgroup$
















                0












                0








                0





                $begingroup$

                This is totally possible with deep neural networks. You can have an input vector and an output vector. However, your specific case does not have sufficient data to train such a model. With 119 inputs and 119 outputs you will need quite a complex network architecture to capture these mappings. In general I like to have at a very minimum 100 times more instances than features when training a neural network.





                Here is an example of a neural network which can sort numbers, it has 4 input neurons and 4 output neurons.



                from __future__ import print_function
                import keras
                from keras.datasets import mnist
                from keras.models import Sequential
                from keras.layers import Dense, Dropout, Flatten
                from keras.layers import Conv1D, MaxPooling1D, Reshape
                from keras.callbacks import ModelCheckpoint
                from keras.models import model_from_json
                from keras import backend as K


                First we will create some data



                import numpy as np

                n = 100000
                x_train = np.zeros((n,4))
                for i in range(n):
                x_train[i,:] = np.random.permutation(50)[0:4]

                x_train = x_train.reshape(n, 4,)
                y_train = np.sort(x_train, axis=1).reshape(n, 4,)

                n = 10000
                x_test = np.zeros((n,4))
                for i in range(n):
                x_test[i,:] = np.random.permutation(50)[0:4]

                x_test = x_test.reshape(n, 4,)
                y_test = np.sort(x_test, axis=1).reshape(n, 4,)

                print(x_test[0].T)
                print(y_test[0])



                [25. 33. 4. 2.]
                [ 2. 4. 25. 33.]




                Let's make our neural network model



                input_shape = (4,)

                model = Sequential()
                model.add(Dense(32, activation='relu',
                input_shape=input_shape))
                model.add(Dense(32, activation='relu',
                input_shape=input_shape))
                model.add(Dense(32, activation='relu',
                input_shape=input_shape))
                model.add(Dense(4))

                model.compile(loss=keras.losses.mean_squared_error,
                optimizer=keras.optimizers.Adadelta(),
                metrics=['accuracy'])


                Now we train it



                epochs = 20
                batch_size = 512
                # Fit the model weights.
                history = model.fit(x_train, y_train,
                batch_size=batch_size,
                epochs=epochs,
                verbose=1,
                validation_data=(x_test, y_test))


                You can see the progression of the training using



                import matplotlib.pyplot as plt
                %matplotlib inline

                plt.figure(figsize=(20,5))
                # summarize history for accuracy
                plt.subplot(1,2,1)
                plt.plot(history.history['acc'])
                plt.plot(history.history['val_acc'])
                plt.title('model accuracy')
                plt.ylabel('accuracy')
                plt.xlabel('epoch')
                plt.legend(['train', 'validation'], loc='lower right')

                # summarize history for loss
                plt.subplot(1,2,2)
                plt.plot(history.history['loss'])
                plt.plot(history.history['val_loss'])
                plt.title('model loss')
                plt.ylabel('loss')
                plt.xlabel('epoch')
                plt.legend(['train', 'validation'], loc='upper right')
                plt.show()


                enter image description here



                Now we have our model, we can sort new inputs



                np.round(model.predict(np.array([[1,5,2,3]])))



                array([[1., 2., 3., 5.]], dtype=float32)




                np.round(model.predict(np.array([[20,7,24,3]])))



                array([[ 3., 7., 20., 23.]], dtype=float32)







                share|improve this answer









                $endgroup$



                This is totally possible with deep neural networks. You can have an input vector and an output vector. However, your specific case does not have sufficient data to train such a model. With 119 inputs and 119 outputs you will need quite a complex network architecture to capture these mappings. In general I like to have at a very minimum 100 times more instances than features when training a neural network.





                Here is an example of a neural network which can sort numbers, it has 4 input neurons and 4 output neurons.



                from __future__ import print_function
                import keras
                from keras.datasets import mnist
                from keras.models import Sequential
                from keras.layers import Dense, Dropout, Flatten
                from keras.layers import Conv1D, MaxPooling1D, Reshape
                from keras.callbacks import ModelCheckpoint
                from keras.models import model_from_json
                from keras import backend as K


                First we will create some data



                import numpy as np

                n = 100000
                x_train = np.zeros((n,4))
                for i in range(n):
                x_train[i,:] = np.random.permutation(50)[0:4]

                x_train = x_train.reshape(n, 4,)
                y_train = np.sort(x_train, axis=1).reshape(n, 4,)

                n = 10000
                x_test = np.zeros((n,4))
                for i in range(n):
                x_test[i,:] = np.random.permutation(50)[0:4]

                x_test = x_test.reshape(n, 4,)
                y_test = np.sort(x_test, axis=1).reshape(n, 4,)

                print(x_test[0].T)
                print(y_test[0])



                [25. 33. 4. 2.]
                [ 2. 4. 25. 33.]




                Let's make our neural network model



                input_shape = (4,)

                model = Sequential()
                model.add(Dense(32, activation='relu',
                input_shape=input_shape))
                model.add(Dense(32, activation='relu',
                input_shape=input_shape))
                model.add(Dense(32, activation='relu',
                input_shape=input_shape))
                model.add(Dense(4))

                model.compile(loss=keras.losses.mean_squared_error,
                optimizer=keras.optimizers.Adadelta(),
                metrics=['accuracy'])


                Now we train it



                epochs = 20
                batch_size = 512
                # Fit the model weights.
                history = model.fit(x_train, y_train,
                batch_size=batch_size,
                epochs=epochs,
                verbose=1,
                validation_data=(x_test, y_test))


                You can see the progression of the training using



                import matplotlib.pyplot as plt
                %matplotlib inline

                plt.figure(figsize=(20,5))
                # summarize history for accuracy
                plt.subplot(1,2,1)
                plt.plot(history.history['acc'])
                plt.plot(history.history['val_acc'])
                plt.title('model accuracy')
                plt.ylabel('accuracy')
                plt.xlabel('epoch')
                plt.legend(['train', 'validation'], loc='lower right')

                # summarize history for loss
                plt.subplot(1,2,2)
                plt.plot(history.history['loss'])
                plt.plot(history.history['val_loss'])
                plt.title('model loss')
                plt.ylabel('loss')
                plt.xlabel('epoch')
                plt.legend(['train', 'validation'], loc='upper right')
                plt.show()


                enter image description here



                Now we have our model, we can sort new inputs



                np.round(model.predict(np.array([[1,5,2,3]])))



                array([[1., 2., 3., 5.]], dtype=float32)




                np.round(model.predict(np.array([[20,7,24,3]])))



                array([[ 3., 7., 20., 23.]], dtype=float32)








                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered 12 hours ago









                JahKnowsJahKnows

                4,897625




                4,897625






















                    hellozq is a new contributor. Be nice, and check out our Code of Conduct.










                    draft saved

                    draft discarded


















                    hellozq is a new contributor. Be nice, and check out our Code of Conduct.













                    hellozq is a new contributor. Be nice, and check out our Code of Conduct.












                    hellozq is a new contributor. Be nice, and check out our Code of Conduct.
















                    Thanks for contributing an answer to Data Science Stack Exchange!


                    • Please be sure to answer the question. Provide details and share your research!

                    But avoid



                    • Asking for help, clarification, or responding to other answers.

                    • Making statements based on opinion; back them up with references or personal experience.


                    Use MathJax to format equations. MathJax reference.


                    To learn more, see our tips on writing great answers.




                    draft saved


                    draft discarded














                    StackExchange.ready(
                    function () {
                    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fdatascience.stackexchange.com%2fquestions%2f46581%2fhow-to-train-a-muliti-input-and-multi-output-trainsets%23new-answer', 'question_page');
                    }
                    );

                    Post as a guest















                    Required, but never shown





















































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown

































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown







                    Popular posts from this blog

                    How to label and detect the document text images

                    Vallis Paradisi

                    Tabula Rosettana