<div dir="ltr">Unless I'm mistaken about what we're looking at, you could use something like:<div><br></div><div><div>class ToMultiInput(TransformerMixin, BaseEstimator):</div><div>    def fit(self, shapes):</div><div>        self.shapes = shapes</div><div>    def transform(self, X):</div><div>        return [X.]</div><div><br></div><div>tmi = ToMultiInput([single.shape for single in train_input])</div><div># this assumes that train_input is a sequence of ndarrays with the same first dimension:</div><div>train_input = np.hstack([single.reshape(single.shape[0], -1)</div><div>                         for single in train_input])</div><div><br></div><div>GridSearchCV(make_pipeline(tmi, my_predictor), ...)</div></div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On 1 May 2017 at 11:45, Carlton Banks <span dir="ltr"><<a href="mailto:noflaco@gmail.com" target="_blank">noflaco@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word">How …  batchsize could also be 1, I’ve just stored it like that.  <div><br></div><div>But how do reshape me data to be a matrix.. thats the big question.. is possible?</div><div><div class="h5"><div><br><div><blockquote type="cite"><div>Den 1. maj 2017 kl. 02.21 skrev Joel Nothman <<a href="mailto:joel.nothman@gmail.com" target="_blank">joel.nothman@gmail.com</a>>:</div><br class="m_-4579478564934195340Apple-interchange-newline"><div><div dir="ltr">Do each of your 33 inputs have a batch of size 100? If you reshape your data so that it all fits in one matrix, and then split it back out into its 33 components as the first transformation in a Pipeline, there should be no problem.</div><div class="gmail_extra"><br><div class="gmail_quote">On 1 May 2017 at 10:17, Joel Nothman <span dir="ltr"><<a href="mailto:joel.nothman@gmail.com" target="_blank">joel.nothman@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Sorry, I don't know enough about keras and its terminology.<div><br>Scikit-learn usually limits itself to datasets where features and targets are a rectangular matrix.</div><div><br></div><div>But grid search and other model selection tools should allow data of other shapes as long as they can be indexed on the first axis. You may be best off, however, getting support from the Keras folks.</div></div><div class="m_-4579478564934195340HOEnZb"><div class="m_-4579478564934195340h5"><div class="gmail_extra"><br><div class="gmail_quote">On 30 April 2017 at 23:23, Carlton Banks <span dir="ltr"><<a href="mailto:noflaco@gmail.com" target="_blank">noflaco@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word">It seems like scikit-learn is not able to handle network with multiple inputs. <div>Keras documentation states: </div><div><br></div><div><p style="box-sizing:border-box;line-height:24px;margin:0px 0px 24px;font-size:16px;color:rgb(64,64,64);font-family:Lato,proxima-nova,'Helvetica Neue',Arial,sans-serif">You can use <code style="box-sizing:border-box;font-family:Consolas,'Andale Mono WT','Andale Mono','Lucida Console','Lucida Sans Typewriter','DejaVu Sans Mono','Bitstream Vera Sans Mono','Liberation Mono','Nimbus Mono L',Monaco,'Courier New',Courier,monospace;font-size:14.399999618530273px;white-space:pre-wrap;max-width:100%;background-color:rgb(255,250,250);border:1px solid rgb(225,228,229);padding:0px 5px;color:rgb(158,15,0);overflow-x:auto;word-wrap:break-word;background-position:initial initial;background-repeat:initial initial">Sequential</code> Keras models (<b>single-input only</b>) as part of your Scikit-Learn workflow via the wrappers found at <code style="box-sizing:border-box;font-family:Consolas,'Andale Mono WT','Andale Mono','Lucida Console','Lucida Sans Typewriter','DejaVu Sans Mono','Bitstream Vera Sans Mono','Liberation Mono','Nimbus Mono L',Monaco,'Courier New',Courier,monospace;font-size:14.399999618530273px;white-space:pre-wrap;max-width:100%;background-color:rgb(255,250,250);border:1px solid rgb(225,228,229);padding:0px 5px;color:rgb(158,15,0);overflow-x:auto;word-wrap:break-word;background-position:initial initial;background-repeat:initial initial"><a href="http://keras.wrappers.scikit_learn.py/" target="_blank">keras.wrappers.scikit_learn<wbr>.py</a></code>.</p><div>But besides what the wrapper can do.. can scikit-learn really not handle multiple inputs?.. </div></div><div><div class="m_-4579478564934195340m_6330581331796415802h5"><div><br></div><div><br><div><blockquote type="cite"><div>Den 30. apr. 2017 kl. 14.18 skrev Carlton Banks <<a href="mailto:noflaco@gmail.com" target="_blank">noflaco@gmail.com</a>>:</div><br class="m_-4579478564934195340m_6330581331796415802m_-1566019061877626530Apple-interchange-newline"><div><div style="word-wrap:break-word">The shapes are<div><br></div><div><pre class="m_-4579478564934195340m_6330581331796415802m_-1566019061877626530prettyprint m_-4579478564934195340m_6330581331796415802m_-1566019061877626530lang-py m_-4579478564934195340m_6330581331796415802m_-1566019061877626530prettyprinted" style="margin-top:0px;margin-bottom:1em;padding:5px;border:0px;font-size:13px;width:auto;max-height:600px;overflow:auto;font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,sans-serif;background-color:rgb(239,240,241);color:rgb(57,51,24);word-wrap:normal"><code style="margin:0px;padding:0px;border:0px;font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,sans-serif;white-space:inherit"><span class="m_-4579478564934195340m_6330581331796415802m_-1566019061877626530kwd" style="margin:0px;padding:0px;border:0px;color:rgb(16,16,148)">print</span><span class="m_-4579478564934195340m_6330581331796415802m_-1566019061877626530pln" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)"> len</span><span class="m_-4579478564934195340m_6330581331796415802m_-1566019061877626530pun" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">(</span><span class="m_-4579478564934195340m_6330581331796415802m_-1566019061877626530pln" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">train_input</span><span class="m_-4579478564934195340m_6330581331796415802m_-1566019061877626530pun" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">)</span><span class="m_-4579478564934195340m_6330581331796415802m_-1566019061877626530pln" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">
</span><span class="m_-4579478564934195340m_6330581331796415802m_-1566019061877626530kwd" style="margin:0px;padding:0px;border:0px;color:rgb(16,16,148)">print</span><span class="m_-4579478564934195340m_6330581331796415802m_-1566019061877626530pln" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)"> train_input</span><span class="m_-4579478564934195340m_6330581331796415802m_-1566019061877626530pun" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">[</span><span class="m_-4579478564934195340m_6330581331796415802m_-1566019061877626530lit" style="margin:0px;padding:0px;border:0px;color:rgb(125,39,39)">0</span><span class="m_-4579478564934195340m_6330581331796415802m_-1566019061877626530pun" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">].</span><span class="m_-4579478564934195340m_6330581331796415802m_-1566019061877626530pln" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">shape
</span><span class="m_-4579478564934195340m_6330581331796415802m_-1566019061877626530kwd" style="margin:0px;padding:0px;border:0px;color:rgb(16,16,148)">print</span><span class="m_-4579478564934195340m_6330581331796415802m_-1566019061877626530pln" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)"> train_output</span><span class="m_-4579478564934195340m_6330581331796415802m_-1566019061877626530pun" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">.</span><span class="m_-4579478564934195340m_6330581331796415802m_-1566019061877626530pln" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">shape

</span><span class="m_-4579478564934195340m_6330581331796415802m_-1566019061877626530lit" style="margin:0px;padding:0px;border:0px;color:rgb(125,39,39)">33</span><span class="m_-4579478564934195340m_6330581331796415802m_-1566019061877626530pln" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">
</span><span class="m_-4579478564934195340m_6330581331796415802m_-1566019061877626530pun" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">(</span><span class="m_-4579478564934195340m_6330581331796415802m_-1566019061877626530lit" style="margin:0px;padding:0px;border:0px;color:rgb(125,39,39)">100</span><span class="m_-4579478564934195340m_6330581331796415802m_-1566019061877626530pun" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">,</span><span class="m_-4579478564934195340m_6330581331796415802m_-1566019061877626530pln" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)"> </span><span class="m_-4579478564934195340m_6330581331796415802m_-1566019061877626530lit" style="margin:0px;padding:0px;border:0px;color:rgb(125,39,39)">8</span><span class="m_-4579478564934195340m_6330581331796415802m_-1566019061877626530pun" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">,</span><span class="m_-4579478564934195340m_6330581331796415802m_-1566019061877626530pln" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)"> </span><span class="m_-4579478564934195340m_6330581331796415802m_-1566019061877626530lit" style="margin:0px;padding:0px;border:0px;color:rgb(125,39,39)">45</span><span class="m_-4579478564934195340m_6330581331796415802m_-1566019061877626530pun" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">,</span><span class="m_-4579478564934195340m_6330581331796415802m_-1566019061877626530pln" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)"> </span><span class="m_-4579478564934195340m_6330581331796415802m_-1566019061877626530lit" style="margin:0px;padding:0px;border:0px;color:rgb(125,39,39)">3</span><span class="m_-4579478564934195340m_6330581331796415802m_-1566019061877626530pun" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">)</span><span class="m_-4579478564934195340m_6330581331796415802m_-1566019061877626530pln" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">
</span><span class="m_-4579478564934195340m_6330581331796415802m_-1566019061877626530pun" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">(</span><span class="m_-4579478564934195340m_6330581331796415802m_-1566019061877626530lit" style="margin:0px;padding:0px;border:0px;color:rgb(125,39,39)">100</span><span class="m_-4579478564934195340m_6330581331796415802m_-1566019061877626530pun" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">,</span><span class="m_-4579478564934195340m_6330581331796415802m_-1566019061877626530pln" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)"> </span><span class="m_-4579478564934195340m_6330581331796415802m_-1566019061877626530lit" style="margin:0px;padding:0px;border:0px;color:rgb(125,39,39)">1</span><span class="m_-4579478564934195340m_6330581331796415802m_-1566019061877626530pun" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">,</span><span class="m_-4579478564934195340m_6330581331796415802m_-1566019061877626530pln" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)"> </span><span class="m_-4579478564934195340m_6330581331796415802m_-1566019061877626530lit" style="margin:0px;padding:0px;border:0px;color:rgb(125,39,39)">145</span><span class="m_-4579478564934195340m_6330581331796415802m_-1566019061877626530pun" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">)</span></code></pre><div><br></div><div>100 is the batch-size..</div><div><blockquote type="cite"><div>Den 30. apr. 2017 kl. 12.57 skrev Joel Nothman <<a href="mailto:joel.nothman@gmail.com" target="_blank">joel.nothman@gmail.com</a>>:</div><br class="m_-4579478564934195340m_6330581331796415802m_-1566019061877626530Apple-interchange-newline"><div><div dir="ltr">Scikit-learn should accept a list as X to grid search and index it just fine. So I'm not sure that constraint applies to Grid Search</div><div class="gmail_extra"><br><div class="gmail_quote">On 30 April 2017 at 20:11, Julio Antonio Soto de Vicente <span dir="ltr"><<a href="mailto:julio@esbet.es" target="_blank">julio@esbet.es</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="auto"><div>Tbh I've never tried, but I would say that te current sklearn API does not support multi-input data...<br></div><div><div class="m_-4579478564934195340m_6330581331796415802m_-1566019061877626530h5"><div><br>El 30 abr 2017, a las 12:02, Joel Nothman <<a href="mailto:joel.nothman@gmail.com" target="_blank">joel.nothman@gmail.com</a>> escribió:<br><br></div><blockquote type="cite"><div><div dir="ltr">What are the shapes of train_input and train_output?</div><div class="gmail_extra"><br><div class="gmail_quote">On 30 April 2017 at 12:59, Carlton Banks <span dir="ltr"><<a href="mailto:noflaco@gmail.com" target="_blank">noflaco@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word">I am currently trying to run some gridsearchCV on a keras model which has multiple inputs. <div>The inputs is stored in a list in which each entry in the list is a input for a specific channel. </div><div><br></div><div><br></div><div>Here is my model and how i use the gridsearch. </div><div><br></div><div><a href="https://pastebin.com/GMKH1L80" target="_blank">https://pastebin.com/GMKH1L80</a></div><div><br></div><div>The error i am getting is: </div><div><br></div><div><a href="https://pastebin.com/A3cB0rMv" target="_blank">https://pastebin.com/A3cB0rMv</a></div><div><br></div><div>Any idea how i can resolve this?</div><div><br></div><div><br></div></div><br>______________________________<wbr>_________________<br>
scikit-learn mailing list<br>
<a href="mailto:scikit-learn@python.org" target="_blank">scikit-learn@python.org</a><br>
<a href="https://mail.python.org/mailman/listinfo/scikit-learn" rel="noreferrer" target="_blank">https://mail.python.org/mailma<wbr>n/listinfo/scikit-learn</a><br>
<br></blockquote></div><br></div>
</div></blockquote><blockquote type="cite"><div><span>______________________________<wbr>_________________</span><br><span>scikit-learn mailing list</span><br><span><a href="mailto:scikit-learn@python.org" target="_blank">scikit-learn@python.org</a></span><br><span><a href="https://mail.python.org/mailman/listinfo/scikit-learn" target="_blank">https://mail.python.org/mailma<wbr>n/listinfo/scikit-learn</a></span><br></div></blockquote></div></div></div><br>______________________________<wbr>_________________<br>
scikit-learn mailing list<br>
<a href="mailto:scikit-learn@python.org" target="_blank">scikit-learn@python.org</a><br>
<a href="https://mail.python.org/mailman/listinfo/scikit-learn" rel="noreferrer" target="_blank">https://mail.python.org/mailma<wbr>n/listinfo/scikit-learn</a><br>
<br></blockquote></div><br></div>
______________________________<wbr>_________________<br>scikit-learn mailing list<br><a href="mailto:scikit-learn@python.org" target="_blank">scikit-learn@python.org</a><br><a href="https://mail.python.org/mailman/listinfo/scikit-learn" target="_blank">https://mail.python.org/mailma<wbr>n/listinfo/scikit-learn</a><br></div></blockquote></div><br></div></div></div></blockquote></div><br></div></div></div></div><br>______________________________<wbr>_________________<br>
scikit-learn mailing list<br>
<a href="mailto:scikit-learn@python.org" target="_blank">scikit-learn@python.org</a><br>
<a href="https://mail.python.org/mailman/listinfo/scikit-learn" rel="noreferrer" target="_blank">https://mail.python.org/mailma<wbr>n/listinfo/scikit-learn</a><br>
<br></blockquote></div><br></div>
</div></div></blockquote></div><br></div>
______________________________<wbr>_________________<br>scikit-learn mailing list<br><a href="mailto:scikit-learn@python.org" target="_blank">scikit-learn@python.org</a><br><a href="https://mail.python.org/mailman/listinfo/scikit-learn" target="_blank">https://mail.python.org/<wbr>mailman/listinfo/scikit-learn</a><br></div></blockquote></div><br></div></div></div></div><br>______________________________<wbr>_________________<br>
scikit-learn mailing list<br>
<a href="mailto:scikit-learn@python.org">scikit-learn@python.org</a><br>
<a href="https://mail.python.org/mailman/listinfo/scikit-learn" rel="noreferrer" target="_blank">https://mail.python.org/<wbr>mailman/listinfo/scikit-learn</a><br>
<br></blockquote></div><br></div>