Skip to content

Commit 4bc2d78

Browse files
authored
Removed ability to save filters from legacy filter code (dotnet#5338)
* Removed ability to save filters from legacy filter code * Deleted LambdaTransformBase and changed ITransformTemplate to IDataTransform * Changed StatefulFilterTransform to implement IDataView instead of IDataTransform
1 parent 37af3f9 commit 4bc2d78

File tree

6 files changed

+28
-533
lines changed

6 files changed

+28
-533
lines changed

src/Microsoft.ML.ResultProcessor/ResultProcessor.cs

Lines changed: 1 addition & 154 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
using System.Globalization;
88
using System.IO;
99
using System.Linq;
10-
using System.Runtime.Serialization.Formatters.Binary;
1110
using System.Text.RegularExpressions;
1211
using Microsoft.ML.Command;
1312
using Microsoft.ML.CommandLine;
@@ -1001,166 +1000,14 @@ protected static KeyValuePair<int, Dictionary<string, float>> AddFoldResults(ILi
10011000
return new KeyValuePair<int, Dictionary<string, float>>(foldIdx, valuesDict);
10021001
}
10031002

1004-
/// <summary>
1005-
/// Makes a deep clone of the list of PredictorResultList Object
1006-
/// </summary>
1007-
/// <param name="predictorResultList">List of PredictorResult Object</param>
1008-
/// <returns>A new instance of List of PredictorResult</returns>
1009-
public static List<PredictorResult> ClonePredictorResultList(List<PredictorResult> predictorResultList)
1010-
{
1011-
MemoryStream ms = new MemoryStream();
1012-
Save(predictorResultList, ms); //save the object in Memory stream
1013-
ms.Seek(0, SeekOrigin.Begin);
1014-
return Load(ms) as List<PredictorResult>; // load the object from memory stream
1015-
}
1016-
1017-
/// <summary>
1018-
/// Makes a deep clone of the list of PredictorResult Object
1019-
/// </summary>
1020-
/// <param name="predictorItem"></param>
1021-
/// <returns></returns>
1022-
public static PredictorResult ClonePredictorResult(PredictorResult predictorItem)
1023-
{
1024-
MemoryStream ms = new MemoryStream();
1025-
Save(predictorItem, ms); //save the object in Memory stream
1026-
ms.Seek(0, SeekOrigin.Begin);
1027-
return Load(ms) as PredictorResult;
1028-
}
1029-
1030-
/// <summary>
1031-
/// Save the List of Predictor object in Memory
1032-
/// </summary>
1033-
/// <param name="predictor">List of PredictorResult Object</param>
1034-
/// <param name="stream">Memory stream object</param>
1035-
private static void Save(List<PredictorResult> predictor, Stream stream)
1036-
{
1037-
BinaryFormatter bf = new BinaryFormatter();
1038-
bf.Serialize(stream, predictor);
1039-
if (stream is MemoryStream)
1040-
stream.Flush();
1041-
else
1042-
stream.Close();
1043-
}
1044-
1045-
/// <summary>
1046-
/// Save the List of Predictor object in Memory
1047-
/// </summary>
1048-
/// <param name="predictor">List of PredictorResult Object</param>
1049-
/// <param name="stream">Memory stream object</param>
1050-
private static void Save(PredictorResult predictor, Stream stream)
1051-
{
1052-
BinaryFormatter bf = new BinaryFormatter();
1053-
bf.Serialize(stream, predictor);
1054-
if (stream is MemoryStream)
1055-
stream.Flush();
1056-
else
1057-
stream.Close();
1058-
}
1059-
1060-
#if TLCFULLBUILD
1061-
/// <summary>
1062-
/// Create a experiment visualization object from experiment result.
1063-
/// </summary>
1064-
private static Experiment CreateVisualizationExperiment(ExperimentItemResult result, int index)
1065-
{
1066-
var experiment = new ML.Runtime.ExperimentVisualization.Experiment
1067-
{
1068-
Key = index.ToString(),
1069-
CompareGroup = string.IsNullOrEmpty(result.CustomizedTag) ? result.TrainerKind : result.CustomizedTag,
1070-
Trainer = new ML.Runtime.ExperimentVisualization.Trainer
1071-
{
1072-
Name = result.TrainerKind,
1073-
ParameterSets = new List<ML.Runtime.ExperimentVisualization.Item>()
1074-
},
1075-
DataSet = new ML.Runtime.ExperimentVisualization.DataSet { File = result.Datafile },
1076-
TestDataSet = new ML.Runtime.ExperimentVisualization.DataSet { File = result.TestDatafile },
1077-
Tool = "TLC",
1078-
RawCommandLine = result.Commandline,
1079-
Results = new List<ML.Runtime.ExperimentVisualization.ExperimentResult>()
1080-
};
1081-
1082-
// Propagate metrics to the report.
1083-
ML.Runtime.ExperimentVisualization.ExperimentResult metrics = new ML.Runtime.ExperimentVisualization.ExperimentResult
1084-
{
1085-
Metrics = new List<ML.Runtime.ExperimentVisualization.MetricValue>(),
1086-
Build = "TLC"
1087-
};
1088-
foreach (KeyValuePair<string, ResultMetric> resultEntity in result.Results)
1089-
{
1090-
metrics.Metrics.Add(new ML.Runtime.ExperimentVisualization.MetricValue
1091-
{
1092-
Name = resultEntity.Key,
1093-
Value = resultEntity.Value.MetricValue,
1094-
StandardDeviation = resultEntity.Value.Deviation
1095-
});
1096-
}
1097-
1098-
metrics.Metrics.Add(new ML.Runtime.ExperimentVisualization.MetricValue
1099-
{
1100-
Name = "Time Elapsed(s)",
1101-
Value = result.Time
1102-
});
1103-
1104-
metrics.Metrics.Add(new ML.Runtime.ExperimentVisualization.MetricValue
1105-
{
1106-
Name = "Physical Memory Usage(MB)",
1107-
Value = result.PhysicalMemory
1108-
});
1109-
1110-
metrics.Metrics.Add(new ML.Runtime.ExperimentVisualization.MetricValue
1111-
{
1112-
Name = "Virtual Memory Usage(MB)",
1113-
Value = result.VirtualMemory
1114-
});
1115-
1116-
// Propagate experiment arguments to the report.
1117-
foreach (KeyValuePair<string, string> setting in result.Settings)
1118-
{
1119-
string val;
1120-
if (result.Settings.TryGetValue(setting.Key, out val))
1121-
{
1122-
experiment.Trainer.ParameterSets.Add(new ML.Runtime.ExperimentVisualization.Item
1123-
{
1124-
Name = setting.Key.Substring(1),
1125-
Value = val
1126-
});
1127-
double doubleVal;
1128-
if (Double.TryParse(val, out doubleVal))
1129-
{
1130-
metrics.Metrics.Add(new ML.Runtime.ExperimentVisualization.MetricValue
1131-
{
1132-
Name = setting.Key,
1133-
Value = doubleVal
1134-
});
1135-
}
1136-
}
1137-
}
1138-
1139-
experiment.Results.Add(metrics);
1140-
1141-
return experiment;
1142-
}
1143-
#endif
1144-
1145-
/// <summary>
1146-
/// Deserialize a predictor, returning as an object
1147-
/// </summary>
1148-
private static object Load(Stream stream)
1149-
{
1150-
BinaryFormatter bf = new BinaryFormatter();
1151-
object o = bf.Deserialize(stream);
1152-
stream.Close();
1153-
return o;
1154-
}
1155-
11561003
public static int Main(string[] args)
11571004
{
11581005
string currentDirectory = Path.GetDirectoryName(typeof(ResultProcessor).Module.FullyQualifiedName);
11591006
var env = new ConsoleEnvironment(42);
11601007
#pragma warning disable CS0618 // The result processor is an internal command line processing utility anyway, so this is, while not great, OK.
11611008
using (AssemblyLoadingUtils.CreateAssemblyRegistrar(env, currentDirectory))
11621009
#pragma warning restore CS0618
1163-
return Main(env, args);
1010+
return Main(env, args);
11641011
}
11651012

11661013
public static int Main(IHostEnvironment env, string[] args)

src/Microsoft.ML.TimeSeries/SequentialTransformBase.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -218,7 +218,7 @@ public void ProcessWithoutBuffer(ref TInput input, ref TOutput output)
218218
/// <summary>
219219
/// The inner stateful Lambda Transform object.
220220
/// </summary>
221-
private readonly IDataTransform _transform;
221+
private readonly IDataView _transform;
222222

223223
/// <summary>
224224
/// The window size for buffering.
@@ -233,7 +233,7 @@ public void ProcessWithoutBuffer(ref TInput input, ref TOutput output)
233233
protected string InputColumnName;
234234
protected string OutputColumnName;
235235

236-
private static IDataTransform CreateLambdaTransform(IHost host, IDataView input, string outputColumnName, string inputColumnName,
236+
private static IDataView CreateLambdaTransform(IHost host, IDataView input, string outputColumnName, string inputColumnName,
237237
Action<TState> initFunction, bool hasBuffer, DataViewType outputColTypeOverride)
238238
{
239239
var inputSchema = SchemaDefinition.Create(typeof(DataBox<TInput>));

src/Microsoft.ML.TimeSeries/SequentialTransformerBase.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -468,7 +468,7 @@ internal sealed class SequentialDataTransform : TransformBase, ITransformTemplat
468468
{
469469
private readonly IStatefulRowMapper _mapper;
470470
private readonly SequentialTransformerBase<TInput, TOutput, TState> _parent;
471-
private readonly IDataTransform _transform;
471+
private readonly IDataView _transform;
472472
private readonly ColumnBindings _bindings;
473473

474474
private MetadataDispatcher Metadata { get; }
@@ -489,7 +489,7 @@ public SequentialDataTransform(IHost host, SequentialTransformerBase<TInput, TOu
489489

490490
public void CloneStateInMapper() => _mapper.CloneState();
491491

492-
private static IDataTransform CreateLambdaTransform(IHost host, IDataView input, string inputColumnName,
492+
private static IDataView CreateLambdaTransform(IHost host, IDataView input, string inputColumnName,
493493
string outputColumnName, string forecastingConfidenceIntervalMinOutputColumnName,
494494
string forecastingConfidenceIntervalMaxOutputColumnName, Action<TState> initFunction, bool hasBuffer, DataViewType outputColTypeOverride)
495495
{

0 commit comments

Comments
 (0)