RT version of MLP objects

nix
Gerard 6 years ago
parent 744811d288
commit bcb4456f79

@ -1,11 +1,11 @@
FluidBaseMLP : FluidDataClient { FluidMLPRegressor : FluidRTDataClient {
const <identity = 0; const <identity = 0;
const <sigmoid = 1; const <sigmoid = 1;
const <relu = 2; const <relu = 2;
const <tanh = 3; const <tanh = 3;
*new {|server, hidden = #[3,3] , activation = 0, outputLayer = 0, maxIter = 100, learnRate = 0.0001, momentum = 0.9, batchSize = 50, validation = 0.2|
*new {|server, hidden = #[3,3] , activation = 0, maxIter = 100, learnRate = 0.0001, momentum = 0.9, batchSize = 50, validation = 0.2|
var hiddenCtrlLabels; var hiddenCtrlLabels;
hidden = [hidden.size]++hidden; hidden = [hidden.size]++hidden;
@ -15,6 +15,7 @@ FluidBaseMLP : FluidDataClient {
[hiddenCtrlLabels,hidden].lace ++ [hiddenCtrlLabels,hidden].lace ++
[ [
\activation,activation, \activation,activation,
\outputLayer, outputLayer,
\maxIter, maxIter, \maxIter, maxIter,
\learnRate,learnRate, \learnRate,learnRate,
\momentum, momentum, \momentum, momentum,
@ -27,13 +28,6 @@ FluidBaseMLP : FluidDataClient {
this.prSendMsg(\clear,action:action); this.prSendMsg(\clear,action:action);
} }
}
FluidMLPRegressor : FluidBaseMLP {
*new {|server, hidden = #[3,3] , activation = 0, maxIter = 100, learnRate = 0.0001, momentum = 0.9, batchSize = 50, validation = 0.2|
^super.new(server,hidden,activation, maxIter,learnRate, momentum, batchSize,validation)
}
fit{|sourceDataSet, targetDataSet, action| fit{|sourceDataSet, targetDataSet, action|
this.prSendMsg(\fit, this.prSendMsg(\fit,
[sourceDataSet.asSymbol, targetDataSet.asSymbol], [sourceDataSet.asSymbol, targetDataSet.asSymbol],
@ -41,23 +35,49 @@ FluidMLPRegressor : FluidBaseMLP {
); );
} }
predict{ |sourceDataSet, targetDataSet, layer, action| predict{ |sourceDataSet, targetDataSet, action|
this.prSendMsg(\predict, this.prSendMsg(\predict,
[sourceDataSet.asSymbol, targetDataSet.asSymbol,layer], [sourceDataSet.asSymbol, targetDataSet.asSymbol],
action); action);
} }
predictPoint { |sourceBuffer, targetBuffer, layer action| predictPoint { |sourceBuffer, targetBuffer, action|
this.prSendMsg(\predictPoint, this.prSendMsg(\predictPoint,
[sourceBuffer.asUGenInput, targetBuffer.asUGenInput, layer], action); [sourceBuffer.asUGenInput, targetBuffer.asUGenInput], action);
} }
} }
FluidMLPClassifier : FluidBaseMLP {
FluidMLPClassifier : FluidRTDataClient {
const <identity = 0;
const <sigmoid = 1;
const <relu = 2;
const <tanh = 3;
*new {|server, hidden = #[3,3] , activation = 0, maxIter = 100, learnRate = 0.0001, momentum = 0.9, batchSize = 50, validation = 0.2| *new {|server, hidden = #[3,3] , activation = 0, maxIter = 100, learnRate = 0.0001, momentum = 0.9, batchSize = 50, validation = 0.2|
^super.new(server,hidden,activation, maxIter,learnRate, momentum, batchSize,validation) var hiddenCtrlLabels;
hidden = [hidden.size]++hidden;
hiddenCtrlLabels = hidden.collect{|x,i| \hidden++i};
^super.new1(server,
[hiddenCtrlLabels,hidden].lace ++
[
\activation,activation,
\maxIter, maxIter,
\learnRate,learnRate,
\momentum, momentum,
\batchsize,batchSize,
\validation,validation,
])
} }
clear{ |action|
this.prSendMsg(\clear,action:action);
}
fit{|sourceDataSet, targetLabelSet, action| fit{|sourceDataSet, targetLabelSet, action|
this.prSendMsg(\fit, this.prSendMsg(\fit,
[sourceDataSet.asSymbol, targetLabelSet.asSymbol], [sourceDataSet.asSymbol, targetLabelSet.asSymbol],
@ -65,14 +85,14 @@ FluidMLPClassifier : FluidBaseMLP {
); );
} }
predict{ |sourceDataSet, targetLabelSet, action| predict{ |sourceDataSet, targetDataSet, action|
this.prSendMsg(\predict, this.prSendMsg(\predict,
[sourceDataSet.asSymbol, targetLabelSet.asSymbol], [sourceDataSet.asSymbol, targetDataSet.asSymbol],
action); action);
} }
predictPoint { |sourceBuffer, action| predictPoint { |sourceBuffer, action|
this.prSendMsg(\predictPoint, this.prSendMsg(\predictPoint,
[sourceBuffer.asUGenInput], action,string(FluidMessageResponse,_,_)); [sourceBuffer.asUGenInput], action, string(FluidMessageResponse,_,_));
} }
} }

@ -38,6 +38,6 @@ PluginLoad(FluidSTFTUGen)
makeSCWrapper<RTAudioTransportClient>("FluidAudioTransport",ft); makeSCWrapper<RTAudioTransportClient>("FluidAudioTransport",ft);
makeSCWrapper<NRTThreadedAudioTransportClient>("FluidBufAudioTransport",ft); makeSCWrapper<NRTThreadedAudioTransportClient>("FluidBufAudioTransport",ft);
makeSCWrapper<NRTThreadedDataSetWriter>("FluidDataSetWr", ft); makeSCWrapper<NRTThreadedDataSetWriter>("FluidDataSetWr", ft);
makeSCWrapper<NRTThreadedMLPRegressorClient>("FluidMLPRegressor",ft); makeSCWrapper<RTMLPRegressorClient>("FluidMLPRegressor",ft);
makeSCWrapper<NRTThreadedMLPClassifierClient>("FluidMLPClassifier",ft); makeSCWrapper<RTMLPClassifierClient>("FluidMLPClassifier",ft);
} }

Loading…
Cancel
Save