Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 27 additions & 0 deletions Microsoft.ML.sln
Original file line numberDiff line numberDiff line change
Expand Up@@ -5,6 +5,9 @@ MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.ML.Core", "src\Microsoft.ML.Core\Microsoft.ML.Core.csproj", "{A6CA6CC6-5D7C-4D7F-A0F5-35E14B383B0A}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{09EADF06-BE25-4228-AB53-95AE3E15B530}"
ProjectSection(SolutionItems) = preProject
src\Source.ruleset = src\Source.ruleset
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{AED9C836-31E3-4F3F-8ABC-929555D3F3C4}"
EndProject
Expand DownExpand Up@@ -88,6 +91,12 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Microsoft.ML.CpuMath", "Mic
pkg\Microsoft.ML.CpuMath\Microsoft.ML.CpuMath.symbols.nupkgproj = pkg\Microsoft.ML.CpuMath\Microsoft.ML.CpuMath.symbols.nupkgproj
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tools-local", "tools-local", "{7F13E156-3EBA-4021-84A5-CD56BA72F99E}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.ML.CodeAnalyzer", "tools-local\Microsoft.ML.CodeAnalyzer\Microsoft.ML.CodeAnalyzer.csproj", "{B4E55B2D-2A92-46E7-B72F-E76D6FD83440}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.ML.CodeAnalyzer.Tests", "test\Microsoft.ML.CodeAnalyzer.Tests\Microsoft.ML.CodeAnalyzer.Tests.csproj", "{3E4ABF07-7970-4BE6-B45B-A13D3C397545}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Expand DownExpand Up@@ -304,6 +313,22 @@ Global
{DCF46B79-1FDB-4DBA-A263-D3D64E3AAA27}.Release|Any CPU.Build.0 = Release|Any CPU
{DCF46B79-1FDB-4DBA-A263-D3D64E3AAA27}.Release-Intrinsics|Any CPU.ActiveCfg = Release|Any CPU
{DCF46B79-1FDB-4DBA-A263-D3D64E3AAA27}.Release-Intrinsics|Any CPU.Build.0 = Release|Any CPU
{B4E55B2D-2A92-46E7-B72F-E76D6FD83440}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B4E55B2D-2A92-46E7-B72F-E76D6FD83440}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B4E55B2D-2A92-46E7-B72F-E76D6FD83440}.Debug-Intrinsics|Any CPU.ActiveCfg = Debug|Any CPU
{B4E55B2D-2A92-46E7-B72F-E76D6FD83440}.Debug-Intrinsics|Any CPU.Build.0 = Debug|Any CPU
{B4E55B2D-2A92-46E7-B72F-E76D6FD83440}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B4E55B2D-2A92-46E7-B72F-E76D6FD83440}.Release|Any CPU.Build.0 = Release|Any CPU
{B4E55B2D-2A92-46E7-B72F-E76D6FD83440}.Release-Intrinsics|Any CPU.ActiveCfg = Release|Any CPU
{B4E55B2D-2A92-46E7-B72F-E76D6FD83440}.Release-Intrinsics|Any CPU.Build.0 = Release|Any CPU
{3E4ABF07-7970-4BE6-B45B-A13D3C397545}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3E4ABF07-7970-4BE6-B45B-A13D3C397545}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3E4ABF07-7970-4BE6-B45B-A13D3C397545}.Debug-Intrinsics|Any CPU.ActiveCfg = Debug|Any CPU
{3E4ABF07-7970-4BE6-B45B-A13D3C397545}.Debug-Intrinsics|Any CPU.Build.0 = Debug|Any CPU
{3E4ABF07-7970-4BE6-B45B-A13D3C397545}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3E4ABF07-7970-4BE6-B45B-A13D3C397545}.Release|Any CPU.Build.0 = Release|Any CPU
{3E4ABF07-7970-4BE6-B45B-A13D3C397545}.Release-Intrinsics|Any CPU.ActiveCfg = Release|Any CPU
{3E4ABF07-7970-4BE6-B45B-A13D3C397545}.Release-Intrinsics|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
Expand DownExpand Up@@ -340,6 +365,8 @@ Global
{001F3B4E-FBE4-4001-AFD2-A6A989CD1C25} = {09EADF06-BE25-4228-AB53-95AE3E15B530}
{DCF46B79-1FDB-4DBA-A263-D3D64E3AAA27} = {09EADF06-BE25-4228-AB53-95AE3E15B530}
{BF66A305-DF10-47E4-8D81-42049B149D2B} = {D3D38B03-B557-484D-8348-8BADEE4DF592}
{B4E55B2D-2A92-46E7-B72F-E76D6FD83440} = {7F13E156-3EBA-4021-84A5-CD56BA72F99E}
{3E4ABF07-7970-4BE6-B45B-A13D3C397545} = {AED9C836-31E3-4F3F-8ABC-929555D3F3C4}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {41165AF1-35BB-4832-A189-73060F82B01D}
Expand Down
2 changes: 1 addition & 1 deletion build/Dependencies.props
Original file line numberDiff line numberDiff line change
Expand Up@@ -7,6 +7,6 @@
<SystemCodeDomPackageVersion>4.4.0</SystemCodeDomPackageVersion>
<SystemReflectionEmitLightweightPackageVersion>4.3.0</SystemReflectionEmitLightweightPackageVersion>
<PublishSymbolsPackageVersion>1.0.0-beta-62824-02</PublishSymbolsPackageVersion>
<LightGBMPackageVersion>2.1.2.2</LightGBMPackageVersion>
<LightGBMPackageVersion>2.1.2.2</LightGBMPackageVersion>
</PropertyGroup>
</Project>
13 changes: 12 additions & 1 deletion src/Directory.Build.props
Original file line numberDiff line numberDiff line change
Expand Up@@ -11,7 +11,18 @@
<NoWarn>$(NoWarn);1591</NoWarn>
<WarningsNotAsErrors>$(WarningsNotAsErrors);1591</WarningsNotAsErrors>


<CodeAnalysisRuleSet>$(MSBuildThisFileDirectory)\Source.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>

<ItemGroup>
<ProjectReference
Condition="'$(UseMLCodeAnalyzer)' != 'false' and '$(MSBuildProjectExtension)' == '.csproj'"
Include="$(MSBuildThisFileDirectory)\..\tools-local\Microsoft.ML.CodeAnalyzer\Microsoft.ML.CodeAnalyzer.csproj">
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
<OutputItemType>Analyzer</OutputItemType>
</ProjectReference>
<PackageReference Condition="'$(UseStyleCopAnalyzer)' != 'false' and '$(MSBuildProjectExtension)' == '.csproj'"
Include="StyleCop.Analyzers" Version="1.1.0-beta008" PrivateAssets="All" />
</ItemGroup>

</Project>
4 changes: 2 additions & 2 deletions src/Microsoft.ML.Api/ApiUtils.cs
Original file line numberDiff line numberDiff line change
Expand Up@@ -46,7 +46,7 @@ private static OpCode GetAssignmentOpCode(Type t)

/// <summary>
/// Each of the specialized 'peek' methods copies the appropriate field value of an instance of T
/// into the provided buffer. So, the call is 'peek(userObject, ref destination)' and the logic is
/// into the provided buffer. So, the call is 'peek(userObject, ref destination)' and the logic is
/// indentical to 'destination = userObject.##FIELD##', where ##FIELD## is defined per peek method.
/// </summary>
internal static Delegate GeneratePeek<TOwn, TRow>(InternalSchemaDefinition.Column column)
Expand DownExpand Up@@ -83,7 +83,7 @@ private static Delegate GeneratePeek<TOwn, TRow, TValue>(FieldInfo fieldInfo, Op

/// <summary>
/// Each of the specialized 'poke' methods sets the appropriate field value of an instance of T
/// to the provided value. So, the call is 'peek(userObject, providedValue)' and the logic is
/// to the provided value. So, the call is 'peek(userObject, providedValue)' and the logic is
/// indentical to 'userObject.##FIELD## = providedValue', where ##FIELD## is defined per poke method.
/// </summary>
internal static Delegate GeneratePoke<TOwn, TRow>(InternalSchemaDefinition.Column column)
Expand Down
10 changes: 5 additions & 5 deletions src/Microsoft.ML.Api/CodeGenerationUtils.cs
Original file line numberDiff line numberDiff line change
Expand Up@@ -97,12 +97,12 @@ public static string GetCSharpString(CSharpCodeProvider codeProvider, string val
}

/// <summary>
/// Gets the C# strings representing the type name for a variable corresponding to
/// the <see cref="IDataView"/> column type.
///
/// If the type is a vector, then <paramref name="useVBuffer"/> controls whether the array field is
/// Gets the C# strings representing the type name for a variable corresponding to
/// the <see cref="IDataView"/> column type.
///
/// If the type is a vector, then <paramref name="useVBuffer"/> controls whether the array field is
/// generated or <see cref="VBuffer{T}"/>.
///
///
/// If additional attributes are required, they are appended to the <paramref name="attributes"/> list.
/// </summary>
private static string GetBackingTypeName(ColumnType colType, bool useVBuffer, List<string> attributes)
Expand Down
18 changes: 9 additions & 9 deletions src/Microsoft.ML.Api/ComponentCreation.cs
Original file line numberDiff line numberDiff line change
Expand Up@@ -11,14 +11,14 @@
namespace Microsoft.ML.Runtime.Api
{
/// <summary>
/// This class defines extension methods for an <see cref="IHostEnvironment"/> to facilitate creating
/// This class defines extension methods for an <see cref="IHostEnvironment"/> to facilitate creating
/// components (loaders, transforms, trainers, scorers, evaluators, savers).
/// </summary>
public static class ComponentCreation
{
/// <summary>
/// Create a new data view which is obtained by appending all columns of all the source data views.
/// If the data views are of different length, the resulting data view will have the length equal to the
/// If the data views are of different length, the resulting data view will have the length equal to the
/// length of the shortest source.
/// </summary>
/// <param name="env">The host environment to use.</param>
Expand DownExpand Up@@ -59,11 +59,11 @@ public static RoleMappedData CreateExamples(this IHostEnvironment env, IDataView
/// Create a new <see cref="IDataView"/> over an in-memory collection of the items of user-defined type.
/// The user maintains ownership of the <paramref name="data"/> and the resulting data view will
/// never alter the contents of the <paramref name="data"/>.
/// Since <see cref="IDataView"/> is assumed to be immutable, the user is expected to not
/// Since <see cref="IDataView"/> is assumed to be immutable, the user is expected to not
/// modify the contents of <paramref name="data"/> while the data view is being actively cursored.
///
///
/// One typical usage for in-memory data view could be: create the data view, train a predictor.
/// Once the predictor is fully trained, modify the contents of the underlying collection and
/// Once the predictor is fully trained, modify the contents of the underlying collection and
/// train another predictor.
/// </summary>
/// <typeparam name="TRow">The user-defined item type.</typeparam>
Expand All@@ -88,9 +88,9 @@ public static IDataView CreateDataView<TRow>(this IHostEnvironment env, IList<TR
/// Since <see cref="IDataView"/> is assumed to be immutable, the user is expected to support
/// multiple enumeration of the <paramref name="data"/> that would return the same results, unless
/// the user knows that the data will only be cursored once.
///
///
/// One typical usage for streaming data view could be: create the data view that lazily loads data
/// as needed, then apply pre-trained transformations to it and cursor through it for transformation
/// as needed, then apply pre-trained transformations to it and cursor through it for transformation
/// results. This is how <see cref="BatchPredictionEngine{TSrc,TDst}"/> is implemented.
/// </summary>
/// <typeparam name="TRow">The user-defined item type.</typeparam>
Expand DownExpand Up@@ -191,7 +191,7 @@ public static PredictionEngine<TSrc, TDst> CreatePredictionEngine<TSrc, TDst>(th
/// <summary>
/// Create a prediction engine.
/// This encapsulates the 'classic' prediction problem, where the input is denoted by the float array of features,
/// and the output is a float score. For binary classification predictors that can output probability, there are output
/// and the output is a float score. For binary classification predictors that can output probability, there are output
/// fields that report the predicted label and probability.
/// </summary>
/// <param name="env">The host environment to use.</param>
Expand All@@ -207,7 +207,7 @@ public static SimplePredictionEngine CreateSimplePredictionEngine(this IHostEnvi

/// <summary>
/// Load the transforms (but not loader) from the model steram and apply them to the specified data.
/// It is acceptable to have no transforms in the model stream: in this case the original
/// It is acceptable to have no transforms in the model stream: in this case the original
/// <paramref name="data"/> will be returned.
/// </summary>
/// <param name="env">The host environment to use.</param>
Expand Down
16 changes: 8 additions & 8 deletions src/Microsoft.ML.Api/DataViewConstructionUtils.cs
Original file line numberDiff line numberDiff line change
Expand Up@@ -285,7 +285,7 @@ private Delegate CreateGetter(int index)
}

// REVIEW: The converting getter invokes a type conversion delegate on every call, so it's inherently slower
// than the 'direct' getter. We don't have good indication of this to the user, and the selection
// than the 'direct' getter. We don't have good indication of this to the user, and the selection
// of affected types is pretty arbitrary (signed integers and bools, but not uints and floats).
private Delegate CreateConvertingArrayGetterDelegate<TSrc, TDst>(int index, Func<TSrc, TDst> convert)
{
Expand DownExpand Up@@ -396,7 +396,7 @@ private void CheckColumnInRange(int columnIndex)
}

/// <summary>
/// An in-memory data view based on the IList of data.
/// An in-memory data view based on the IList of data.
/// Supports shuffling.
/// </summary>
private sealed class ListDataView<TRow> : DataViewBase<TRow>
Expand DownExpand Up@@ -492,11 +492,11 @@ protected override bool MoveManyCore(long count)
}

/// <summary>
/// An in-memory data view based on the IEnumerable of data.
/// An in-memory data view based on the IEnumerable of data.
/// Doesn't support shuffling.
///
///
/// This class is public because prediction engine wants to call its <see cref="SetData"/>
/// for performance reasons.
/// for performance reasons.
/// </summary>
public sealed class StreamingDataView<TRow> : DataViewBase<TRow>
where TRow : class
Expand DownExpand Up@@ -578,7 +578,7 @@ protected override bool MoveNextCore()

/// <summary>
/// This represents the 'infinite data view' over one (mutable) user-defined object.
/// The 'current row' object can be updated at any time, this will affect all the
/// The 'current row' object can be updated at any time, this will affect all the
/// newly created cursors, but not the ones already existing.
/// </summary>
public sealed class SingleRowLoopDataView<TRow> : DataViewBase<TRow>
Expand DownExpand Up@@ -731,7 +731,7 @@ public abstract partial class MetadataInfo
/// </summary>
public ColumnType MetadataType;
/// <summary>
/// The string identifier of the metadata. Some identifiers have special meaning,
/// The string identifier of the metadata. Some identifiers have special meaning,
/// like "SlotNames", but any other identifiers can be used.
/// </summary>
public readonly string Kind;
Expand All@@ -757,7 +757,7 @@ public sealed class MetadataInfo<T> : MetadataInfo
/// <summary>
/// Constructor for metadata of value type T.
/// </summary>
/// <param name="kind">The string identifier of the metadata. Some identifiers have special meaning,
/// <param name="kind">The string identifier of the metadata. Some identifiers have special meaning,
/// like "SlotNames", but any other identifiers can be used.</param>
/// <param name="value">Metadata value.</param>
/// <param name="metadataType">Type of the metadata.</param>
Expand Down
4 changes: 2 additions & 2 deletions src/Microsoft.ML.Api/GenerateCodeCommand.cs
Original file line numberDiff line numberDiff line change
Expand Up@@ -21,7 +21,7 @@ namespace Microsoft.ML.Runtime.Api
{
/// <summary>
/// Generates the sample prediction code for a given model file, with correct input and output classes.
///
///
/// REVIEW: Consider adding support for generating VBuffers instead of arrays, maybe for high dimensionality vectors.
/// </summary>
public sealed class GenerateCodeCommand : ICommand
Expand All@@ -45,7 +45,7 @@ public sealed class Arguments
ShortName = "sparse", SortOrder = 102)]
public bool SparseVectorDeclaration;

// REVIEW: currently, it's only used in unit testing to not generate the paths into the test output folder.
// REVIEW: currently, it's only used in unit testing to not generate the paths into the test output folder.
// However, it might be handy for automation scenarios, so I've added this as a hidden option.
[Argument(ArgumentType.AtMostOnce, HelpText = "A location of the model file to put into generated file", Hide = true)]
public string ModelNameOverride;
Expand Down
14 changes: 7 additions & 7 deletions src/Microsoft.ML.Api/InternalSchemaDefinition.cs
Original file line numberDiff line numberDiff line change
Expand Up@@ -76,12 +76,12 @@ private Column(string columnName, ColumnType columnType, FieldInfo fieldInfo = n
}

/// <summary>
/// Function that checks whether the InternalSchemaDefinition.Column is a valid one.
/// Function that checks whether the InternalSchemaDefinition.Column is a valid one.
/// To be valid, the Column must:
/// 1. Have non-empty values for ColumnName and ColumnType
/// 2. Have a non-empty value for FieldInfo iff it is a field column, else
/// ReturnParameterInfo and Generator iff it is a computed column
/// 3. Generator must have the method inputs (TRow rowObject,
/// 3. Generator must have the method inputs (TRow rowObject,
/// long position, ref TValue outputValue) in that order.
/// </summary>
[Conditional("DEBUG")]
Expand DownExpand Up@@ -133,7 +133,7 @@ private InternalSchemaDefinition(Column[] columns)
/// <summary>
/// Given a field info on a type, returns whether this appears to be a vector type,
/// and also the associated data kind for this type. If a data kind could not
/// be determined, this will throw.
/// be determined, this will throw.
/// </summary>
/// <param name="fieldInfo">The field info to inspect.</param>
/// <param name="isVector">Whether this appears to be a vector type.</param>
Expand All@@ -149,7 +149,7 @@ public static void GetVectorAndKind(FieldInfo fieldInfo, out bool isVector, out
/// <summary>
/// Given a parameter info on a type, returns whether this appears to be a vector type,
/// and also the associated data kind for this type. If a data kind could not
/// be determined, this will throw.
/// be determined, this will throw.
/// </summary>
/// <param name="parameterInfo">The parameter info to inspect.</param>
/// <param name="isVector">Whether this appears to be a vector type.</param>
Expand All@@ -165,7 +165,7 @@ public static void GetVectorAndKind(ParameterInfo parameterInfo, out bool isVect
/// <summary>
/// Given a type and name for a variable, returns whether this appears to be a vector type,
/// and also the associated data kind for this type. If a data kind could not
/// be determined, this will throw.
/// be determined, this will throw.
/// </summary>
/// <param name="rawType">The type of the variable to inspect.</param>
/// <param name="name">The name of the variable to inspect.</param>
Expand DownExpand Up@@ -222,7 +222,7 @@ public static InternalSchemaDefinition Create(Type userType, SchemaDefinition us
col.MemberName,
userType.FullName);

//Clause to handle the field that may be used to expose the cursor channel.
//Clause to handle the field that may be used to expose the cursor channel.
//This field does not need a column.
if (fieldInfo.FieldType == typeof(IChannel))
continue;
Expand DownExpand Up@@ -251,7 +251,7 @@ public static InternalSchemaDefinition Create(Type userType, SchemaDefinition us
}
else
{
// Make sure that the types are compatible with the declared type, including
// Make sure that the types are compatible with the declared type, including
// whether it is a vector type.
if (isVector != col.ColumnType.IsVector)
{
Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 27 additions & 0 deletions Microsoft.ML.sln
Original file line numberDiff line numberDiff line change
Expand Up@@ -5,6 +5,9 @@ MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.ML.Core", "src\Microsoft.ML.Core\Microsoft.ML.Core.csproj", "{A6CA6CC6-5D7C-4D7F-A0F5-35E14B383B0A}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{09EADF06-BE25-4228-AB53-95AE3E15B530}"
ProjectSection(SolutionItems) = preProject
src\Source.ruleset = src\Source.ruleset
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{AED9C836-31E3-4F3F-8ABC-929555D3F3C4}"
EndProject
Expand DownExpand Up@@ -88,6 +91,12 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Microsoft.ML.CpuMath", "Mic
pkg\Microsoft.ML.CpuMath\Microsoft.ML.CpuMath.symbols.nupkgproj = pkg\Microsoft.ML.CpuMath\Microsoft.ML.CpuMath.symbols.nupkgproj
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tools-local", "tools-local", "{7F13E156-3EBA-4021-84A5-CD56BA72F99E}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.ML.CodeAnalyzer", "tools-local\Microsoft.ML.CodeAnalyzer\Microsoft.ML.CodeAnalyzer.csproj", "{B4E55B2D-2A92-46E7-B72F-E76D6FD83440}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.ML.CodeAnalyzer.Tests", "test\Microsoft.ML.CodeAnalyzer.Tests\Microsoft.ML.CodeAnalyzer.Tests.csproj", "{3E4ABF07-7970-4BE6-B45B-A13D3C397545}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Expand DownExpand Up@@ -304,6 +313,22 @@ Global
{DCF46B79-1FDB-4DBA-A263-D3D64E3AAA27}.Release|Any CPU.Build.0 = Release|Any CPU
{DCF46B79-1FDB-4DBA-A263-D3D64E3AAA27}.Release-Intrinsics|Any CPU.ActiveCfg = Release|Any CPU
{DCF46B79-1FDB-4DBA-A263-D3D64E3AAA27}.Release-Intrinsics|Any CPU.Build.0 = Release|Any CPU
{B4E55B2D-2A92-46E7-B72F-E76D6FD83440}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B4E55B2D-2A92-46E7-B72F-E76D6FD83440}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B4E55B2D-2A92-46E7-B72F-E76D6FD83440}.Debug-Intrinsics|Any CPU.ActiveCfg = Debug|Any CPU
{B4E55B2D-2A92-46E7-B72F-E76D6FD83440}.Debug-Intrinsics|Any CPU.Build.0 = Debug|Any CPU
{B4E55B2D-2A92-46E7-B72F-E76D6FD83440}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B4E55B2D-2A92-46E7-B72F-E76D6FD83440}.Release|Any CPU.Build.0 = Release|Any CPU
{B4E55B2D-2A92-46E7-B72F-E76D6FD83440}.Release-Intrinsics|Any CPU.ActiveCfg = Release|Any CPU
{B4E55B2D-2A92-46E7-B72F-E76D6FD83440}.Release-Intrinsics|Any CPU.Build.0 = Release|Any CPU
{3E4ABF07-7970-4BE6-B45B-A13D3C397545}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3E4ABF07-7970-4BE6-B45B-A13D3C397545}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3E4ABF07-7970-4BE6-B45B-A13D3C397545}.Debug-Intrinsics|Any CPU.ActiveCfg = Debug|Any CPU
{3E4ABF07-7970-4BE6-B45B-A13D3C397545}.Debug-Intrinsics|Any CPU.Build.0 = Debug|Any CPU
{3E4ABF07-7970-4BE6-B45B-A13D3C397545}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3E4ABF07-7970-4BE6-B45B-A13D3C397545}.Release|Any CPU.Build.0 = Release|Any CPU
{3E4ABF07-7970-4BE6-B45B-A13D3C397545}.Release-Intrinsics|Any CPU.ActiveCfg = Release|Any CPU
{3E4ABF07-7970-4BE6-B45B-A13D3C397545}.Release-Intrinsics|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
Expand DownExpand Up@@ -340,6 +365,8 @@ Global
{001F3B4E-FBE4-4001-AFD2-A6A989CD1C25} = {09EADF06-BE25-4228-AB53-95AE3E15B530}
{DCF46B79-1FDB-4DBA-A263-D3D64E3AAA27} = {09EADF06-BE25-4228-AB53-95AE3E15B530}
{BF66A305-DF10-47E4-8D81-42049B149D2B} = {D3D38B03-B557-484D-8348-8BADEE4DF592}
{B4E55B2D-2A92-46E7-B72F-E76D6FD83440} = {7F13E156-3EBA-4021-84A5-CD56BA72F99E}
{3E4ABF07-7970-4BE6-B45B-A13D3C397545} = {AED9C836-31E3-4F3F-8ABC-929555D3F3C4}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {41165AF1-35BB-4832-A189-73060F82B01D}
Expand Down
2 changes: 1 addition & 1 deletion build/Dependencies.props
Original file line numberDiff line numberDiff line change
Expand Up@@ -7,6 +7,6 @@
<SystemCodeDomPackageVersion>4.4.0</SystemCodeDomPackageVersion>
<SystemReflectionEmitLightweightPackageVersion>4.3.0</SystemReflectionEmitLightweightPackageVersion>
<PublishSymbolsPackageVersion>1.0.0-beta-62824-02</PublishSymbolsPackageVersion>
<LightGBMPackageVersion>2.1.2.2</LightGBMPackageVersion>
<LightGBMPackageVersion>2.1.2.2</LightGBMPackageVersion>
</PropertyGroup>
</Project>
13 changes: 12 additions & 1 deletion src/Directory.Build.props
Original file line numberDiff line numberDiff line change
Expand Up@@ -11,7 +11,18 @@
<NoWarn>$(NoWarn);1591</NoWarn>
<WarningsNotAsErrors>$(WarningsNotAsErrors);1591</WarningsNotAsErrors>


<CodeAnalysisRuleSet>$(MSBuildThisFileDirectory)\Source.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>

<ItemGroup>
<ProjectReference
Condition="'$(UseMLCodeAnalyzer)' != 'false' and '$(MSBuildProjectExtension)' == '.csproj'"
Include="$(MSBuildThisFileDirectory)\..\tools-local\Microsoft.ML.CodeAnalyzer\Microsoft.ML.CodeAnalyzer.csproj">
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
<OutputItemType>Analyzer</OutputItemType>
</ProjectReference>
<PackageReference Condition="'$(UseStyleCopAnalyzer)' != 'false' and '$(MSBuildProjectExtension)' == '.csproj'"
Include="StyleCop.Analyzers" Version="1.1.0-beta008" PrivateAssets="All" />
</ItemGroup>

</Project>
4 changes: 2 additions & 2 deletions src/Microsoft.ML.Api/ApiUtils.cs
Original file line numberDiff line numberDiff line change
Expand Up@@ -46,7 +46,7 @@ private static OpCode GetAssignmentOpCode(Type t)

/// <summary>
/// Each of the specialized 'peek' methods copies the appropriate field value of an instance of T
/// into the provided buffer. So, the call is 'peek(userObject, ref destination)' and the logic is
/// into the provided buffer. So, the call is 'peek(userObject, ref destination)' and the logic is
/// indentical to 'destination = userObject.##FIELD##', where ##FIELD## is defined per peek method.
/// </summary>
internal static Delegate GeneratePeek<TOwn, TRow>(InternalSchemaDefinition.Column column)
Expand DownExpand Up@@ -83,7 +83,7 @@ private static Delegate GeneratePeek<TOwn, TRow, TValue>(FieldInfo fieldInfo, Op

/// <summary>
/// Each of the specialized 'poke' methods sets the appropriate field value of an instance of T
/// to the provided value. So, the call is 'peek(userObject, providedValue)' and the logic is
/// to the provided value. So, the call is 'peek(userObject, providedValue)' and the logic is
/// indentical to 'userObject.##FIELD## = providedValue', where ##FIELD## is defined per poke method.
/// </summary>
internal static Delegate GeneratePoke<TOwn, TRow>(InternalSchemaDefinition.Column column)
Expand Down
10 changes: 5 additions & 5 deletions src/Microsoft.ML.Api/CodeGenerationUtils.cs
Original file line numberDiff line numberDiff line change
Expand Up@@ -97,12 +97,12 @@ public static string GetCSharpString(CSharpCodeProvider codeProvider, string val
}

/// <summary>
/// Gets the C# strings representing the type name for a variable corresponding to
/// the <see cref="IDataView"/> column type.
///
/// If the type is a vector, then <paramref name="useVBuffer"/> controls whether the array field is
/// Gets the C# strings representing the type name for a variable corresponding to
/// the <see cref="IDataView"/> column type.
///
/// If the type is a vector, then <paramref name="useVBuffer"/> controls whether the array field is
/// generated or <see cref="VBuffer{T}"/>.
///
///
/// If additional attributes are required, they are appended to the <paramref name="attributes"/> list.
/// </summary>
private static string GetBackingTypeName(ColumnType colType, bool useVBuffer, List<string> attributes)
Expand Down
18 changes: 9 additions & 9 deletions src/Microsoft.ML.Api/ComponentCreation.cs
Original file line numberDiff line numberDiff line change
Expand Up@@ -11,14 +11,14 @@
namespace Microsoft.ML.Runtime.Api
{
/// <summary>
/// This class defines extension methods for an <see cref="IHostEnvironment"/> to facilitate creating
/// This class defines extension methods for an <see cref="IHostEnvironment"/> to facilitate creating
/// components (loaders, transforms, trainers, scorers, evaluators, savers).
/// </summary>
public static class ComponentCreation
{
/// <summary>
/// Create a new data view which is obtained by appending all columns of all the source data views.
/// If the data views are of different length, the resulting data view will have the length equal to the
/// If the data views are of different length, the resulting data view will have the length equal to the
/// length of the shortest source.
/// </summary>
/// <param name="env">The host environment to use.</param>
Expand DownExpand Up@@ -59,11 +59,11 @@ public static RoleMappedData CreateExamples(this IHostEnvironment env, IDataView
/// Create a new <see cref="IDataView"/> over an in-memory collection of the items of user-defined type.
/// The user maintains ownership of the <paramref name="data"/> and the resulting data view will
/// never alter the contents of the <paramref name="data"/>.
/// Since <see cref="IDataView"/> is assumed to be immutable, the user is expected to not
/// Since <see cref="IDataView"/> is assumed to be immutable, the user is expected to not
/// modify the contents of <paramref name="data"/> while the data view is being actively cursored.
///
///
/// One typical usage for in-memory data view could be: create the data view, train a predictor.
/// Once the predictor is fully trained, modify the contents of the underlying collection and
/// Once the predictor is fully trained, modify the contents of the underlying collection and
/// train another predictor.
/// </summary>
/// <typeparam name="TRow">The user-defined item type.</typeparam>
Expand All@@ -88,9 +88,9 @@ public static IDataView CreateDataView<TRow>(this IHostEnvironment env, IList<TR
/// Since <see cref="IDataView"/> is assumed to be immutable, the user is expected to support
/// multiple enumeration of the <paramref name="data"/> that would return the same results, unless
/// the user knows that the data will only be cursored once.
///
///
/// One typical usage for streaming data view could be: create the data view that lazily loads data
/// as needed, then apply pre-trained transformations to it and cursor through it for transformation
/// as needed, then apply pre-trained transformations to it and cursor through it for transformation
/// results. This is how <see cref="BatchPredictionEngine{TSrc,TDst}"/> is implemented.
/// </summary>
/// <typeparam name="TRow">The user-defined item type.</typeparam>
Expand DownExpand Up@@ -191,7 +191,7 @@ public static PredictionEngine<TSrc, TDst> CreatePredictionEngine<TSrc, TDst>(th
/// <summary>
/// Create a prediction engine.
/// This encapsulates the 'classic' prediction problem, where the input is denoted by the float array of features,
/// and the output is a float score. For binary classification predictors that can output probability, there are output
/// and the output is a float score. For binary classification predictors that can output probability, there are output
/// fields that report the predicted label and probability.
/// </summary>
/// <param name="env">The host environment to use.</param>
Expand All@@ -207,7 +207,7 @@ public static SimplePredictionEngine CreateSimplePredictionEngine(this IHostEnvi

/// <summary>
/// Load the transforms (but not loader) from the model steram and apply them to the specified data.
/// It is acceptable to have no transforms in the model stream: in this case the original
/// It is acceptable to have no transforms in the model stream: in this case the original
/// <paramref name="data"/> will be returned.
/// </summary>
/// <param name="env">The host environment to use.</param>
Expand Down
16 changes: 8 additions & 8 deletions src/Microsoft.ML.Api/DataViewConstructionUtils.cs
Original file line numberDiff line numberDiff line change
Expand Up@@ -285,7 +285,7 @@ private Delegate CreateGetter(int index)
}

// REVIEW: The converting getter invokes a type conversion delegate on every call, so it's inherently slower
// than the 'direct' getter. We don't have good indication of this to the user, and the selection
// than the 'direct' getter. We don't have good indication of this to the user, and the selection
// of affected types is pretty arbitrary (signed integers and bools, but not uints and floats).
private Delegate CreateConvertingArrayGetterDelegate<TSrc, TDst>(int index, Func<TSrc, TDst> convert)
{
Expand DownExpand Up@@ -396,7 +396,7 @@ private void CheckColumnInRange(int columnIndex)
}

/// <summary>
/// An in-memory data view based on the IList of data.
/// An in-memory data view based on the IList of data.
/// Supports shuffling.
/// </summary>
private sealed class ListDataView<TRow> : DataViewBase<TRow>
Expand DownExpand Up@@ -492,11 +492,11 @@ protected override bool MoveManyCore(long count)
}

/// <summary>
/// An in-memory data view based on the IEnumerable of data.
/// An in-memory data view based on the IEnumerable of data.
/// Doesn't support shuffling.
///
///
/// This class is public because prediction engine wants to call its <see cref="SetData"/>
/// for performance reasons.
/// for performance reasons.
/// </summary>
public sealed class StreamingDataView<TRow> : DataViewBase<TRow>
where TRow : class
Expand DownExpand Up@@ -578,7 +578,7 @@ protected override bool MoveNextCore()

/// <summary>
/// This represents the 'infinite data view' over one (mutable) user-defined object.
/// The 'current row' object can be updated at any time, this will affect all the
/// The 'current row' object can be updated at any time, this will affect all the
/// newly created cursors, but not the ones already existing.
/// </summary>
public sealed class SingleRowLoopDataView<TRow> : DataViewBase<TRow>
Expand DownExpand Up@@ -731,7 +731,7 @@ public abstract partial class MetadataInfo
/// </summary>
public ColumnType MetadataType;
/// <summary>
/// The string identifier of the metadata. Some identifiers have special meaning,
/// The string identifier of the metadata. Some identifiers have special meaning,
/// like "SlotNames", but any other identifiers can be used.
/// </summary>
public readonly string Kind;
Expand All@@ -757,7 +757,7 @@ public sealed class MetadataInfo<T> : MetadataInfo
/// <summary>
/// Constructor for metadata of value type T.
/// </summary>
/// <param name="kind">The string identifier of the metadata. Some identifiers have special meaning,
/// <param name="kind">The string identifier of the metadata. Some identifiers have special meaning,
/// like "SlotNames", but any other identifiers can be used.</param>
/// <param name="value">Metadata value.</param>
/// <param name="metadataType">Type of the metadata.</param>
Expand Down
4 changes: 2 additions & 2 deletions src/Microsoft.ML.Api/GenerateCodeCommand.cs
Original file line numberDiff line numberDiff line change
Expand Up@@ -21,7 +21,7 @@ namespace Microsoft.ML.Runtime.Api
{
/// <summary>
/// Generates the sample prediction code for a given model file, with correct input and output classes.
///
///
/// REVIEW: Consider adding support for generating VBuffers instead of arrays, maybe for high dimensionality vectors.
/// </summary>
public sealed class GenerateCodeCommand : ICommand
Expand All@@ -45,7 +45,7 @@ public sealed class Arguments
ShortName = "sparse", SortOrder = 102)]
public bool SparseVectorDeclaration;

// REVIEW: currently, it's only used in unit testing to not generate the paths into the test output folder.
// REVIEW: currently, it's only used in unit testing to not generate the paths into the test output folder.
// However, it might be handy for automation scenarios, so I've added this as a hidden option.
[Argument(ArgumentType.AtMostOnce, HelpText = "A location of the model file to put into generated file", Hide = true)]
public string ModelNameOverride;
Expand Down
14 changes: 7 additions & 7 deletions src/Microsoft.ML.Api/InternalSchemaDefinition.cs
Original file line numberDiff line numberDiff line change
Expand Up@@ -76,12 +76,12 @@ private Column(string columnName, ColumnType columnType, FieldInfo fieldInfo = n
}

/// <summary>
/// Function that checks whether the InternalSchemaDefinition.Column is a valid one.
/// Function that checks whether the InternalSchemaDefinition.Column is a valid one.
/// To be valid, the Column must:
/// 1. Have non-empty values for ColumnName and ColumnType
/// 2. Have a non-empty value for FieldInfo iff it is a field column, else
/// ReturnParameterInfo and Generator iff it is a computed column
/// 3. Generator must have the method inputs (TRow rowObject,
/// 3. Generator must have the method inputs (TRow rowObject,
/// long position, ref TValue outputValue) in that order.
/// </summary>
[Conditional("DEBUG")]
Expand DownExpand Up@@ -133,7 +133,7 @@ private InternalSchemaDefinition(Column[] columns)
/// <summary>
/// Given a field info on a type, returns whether this appears to be a vector type,
/// and also the associated data kind for this type. If a data kind could not
/// be determined, this will throw.
/// be determined, this will throw.
/// </summary>
/// <param name="fieldInfo">The field info to inspect.</param>
/// <param name="isVector">Whether this appears to be a vector type.</param>
Expand All@@ -149,7 +149,7 @@ public static void GetVectorAndKind(FieldInfo fieldInfo, out bool isVector, out
/// <summary>
/// Given a parameter info on a type, returns whether this appears to be a vector type,
/// and also the associated data kind for this type. If a data kind could not
/// be determined, this will throw.
/// be determined, this will throw.
/// </summary>
/// <param name="parameterInfo">The parameter info to inspect.</param>
/// <param name="isVector">Whether this appears to be a vector type.</param>
Expand All@@ -165,7 +165,7 @@ public static void GetVectorAndKind(ParameterInfo parameterInfo, out bool isVect
/// <summary>
/// Given a type and name for a variable, returns whether this appears to be a vector type,
/// and also the associated data kind for this type. If a data kind could not
/// be determined, this will throw.
/// be determined, this will throw.
/// </summary>
/// <param name="rawType">The type of the variable to inspect.</param>
/// <param name="name">The name of the variable to inspect.</param>
Expand DownExpand Up@@ -222,7 +222,7 @@ public static InternalSchemaDefinition Create(Type userType, SchemaDefinition us
col.MemberName,
userType.FullName);

//Clause to handle the field that may be used to expose the cursor channel.
//Clause to handle the field that may be used to expose the cursor channel.
//This field does not need a column.
if (fieldInfo.FieldType == typeof(IChannel))
continue;
Expand DownExpand Up@@ -251,7 +251,7 @@ public static InternalSchemaDefinition Create(Type userType, SchemaDefinition us
}
else
{
// Make sure that the types are compatible with the declared type, including
// Make sure that the types are compatible with the declared type, including
// whether it is a vector type.
if (isVector != col.ColumnType.IsVector)
{
Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 27 additions & 0 deletions Microsoft.ML.sln
Original file line numberDiff line numberDiff line change
Expand Up@@ -5,6 +5,9 @@ MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.ML.Core", "src\Microsoft.ML.Core\Microsoft.ML.Core.csproj", "{A6CA6CC6-5D7C-4D7F-A0F5-35E14B383B0A}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{09EADF06-BE25-4228-AB53-95AE3E15B530}"
ProjectSection(SolutionItems) = preProject
src\Source.ruleset = src\Source.ruleset
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{AED9C836-31E3-4F3F-8ABC-929555D3F3C4}"
EndProject
Expand DownExpand Up@@ -88,6 +91,12 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Microsoft.ML.CpuMath", "Mic
pkg\Microsoft.ML.CpuMath\Microsoft.ML.CpuMath.symbols.nupkgproj = pkg\Microsoft.ML.CpuMath\Microsoft.ML.CpuMath.symbols.nupkgproj
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tools-local", "tools-local", "{7F13E156-3EBA-4021-84A5-CD56BA72F99E}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.ML.CodeAnalyzer", "tools-local\Microsoft.ML.CodeAnalyzer\Microsoft.ML.CodeAnalyzer.csproj", "{B4E55B2D-2A92-46E7-B72F-E76D6FD83440}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.ML.CodeAnalyzer.Tests", "test\Microsoft.ML.CodeAnalyzer.Tests\Microsoft.ML.CodeAnalyzer.Tests.csproj", "{3E4ABF07-7970-4BE6-B45B-A13D3C397545}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Expand DownExpand Up@@ -304,6 +313,22 @@ Global
{DCF46B79-1FDB-4DBA-A263-D3D64E3AAA27}.Release|Any CPU.Build.0 = Release|Any CPU
{DCF46B79-1FDB-4DBA-A263-D3D64E3AAA27}.Release-Intrinsics|Any CPU.ActiveCfg = Release|Any CPU
{DCF46B79-1FDB-4DBA-A263-D3D64E3AAA27}.Release-Intrinsics|Any CPU.Build.0 = Release|Any CPU
{B4E55B2D-2A92-46E7-B72F-E76D6FD83440}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B4E55B2D-2A92-46E7-B72F-E76D6FD83440}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B4E55B2D-2A92-46E7-B72F-E76D6FD83440}.Debug-Intrinsics|Any CPU.ActiveCfg = Debug|Any CPU
{B4E55B2D-2A92-46E7-B72F-E76D6FD83440}.Debug-Intrinsics|Any CPU.Build.0 = Debug|Any CPU
{B4E55B2D-2A92-46E7-B72F-E76D6FD83440}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B4E55B2D-2A92-46E7-B72F-E76D6FD83440}.Release|Any CPU.Build.0 = Release|Any CPU
{B4E55B2D-2A92-46E7-B72F-E76D6FD83440}.Release-Intrinsics|Any CPU.ActiveCfg = Release|Any CPU
{B4E55B2D-2A92-46E7-B72F-E76D6FD83440}.Release-Intrinsics|Any CPU.Build.0 = Release|Any CPU
{3E4ABF07-7970-4BE6-B45B-A13D3C397545}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3E4ABF07-7970-4BE6-B45B-A13D3C397545}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3E4ABF07-7970-4BE6-B45B-A13D3C397545}.Debug-Intrinsics|Any CPU.ActiveCfg = Debug|Any CPU
{3E4ABF07-7970-4BE6-B45B-A13D3C397545}.Debug-Intrinsics|Any CPU.Build.0 = Debug|Any CPU
{3E4ABF07-7970-4BE6-B45B-A13D3C397545}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3E4ABF07-7970-4BE6-B45B-A13D3C397545}.Release|Any CPU.Build.0 = Release|Any CPU
{3E4ABF07-7970-4BE6-B45B-A13D3C397545}.Release-Intrinsics|Any CPU.ActiveCfg = Release|Any CPU
{3E4ABF07-7970-4BE6-B45B-A13D3C397545}.Release-Intrinsics|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
Expand DownExpand Up@@ -340,6 +365,8 @@ Global
{001F3B4E-FBE4-4001-AFD2-A6A989CD1C25} = {09EADF06-BE25-4228-AB53-95AE3E15B530}
{DCF46B79-1FDB-4DBA-A263-D3D64E3AAA27} = {09EADF06-BE25-4228-AB53-95AE3E15B530}
{BF66A305-DF10-47E4-8D81-42049B149D2B} = {D3D38B03-B557-484D-8348-8BADEE4DF592}
{B4E55B2D-2A92-46E7-B72F-E76D6FD83440} = {7F13E156-3EBA-4021-84A5-CD56BA72F99E}
{3E4ABF07-7970-4BE6-B45B-A13D3C397545} = {AED9C836-31E3-4F3F-8ABC-929555D3F3C4}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {41165AF1-35BB-4832-A189-73060F82B01D}
Expand Down
2 changes: 1 addition & 1 deletion build/Dependencies.props
Original file line numberDiff line numberDiff line change
Expand Up@@ -7,6 +7,6 @@
<SystemCodeDomPackageVersion>4.4.0</SystemCodeDomPackageVersion>
<SystemReflectionEmitLightweightPackageVersion>4.3.0</SystemReflectionEmitLightweightPackageVersion>
<PublishSymbolsPackageVersion>1.0.0-beta-62824-02</PublishSymbolsPackageVersion>
<LightGBMPackageVersion>2.1.2.2</LightGBMPackageVersion>
<LightGBMPackageVersion>2.1.2.2</LightGBMPackageVersion>
</PropertyGroup>
</Project>
13 changes: 12 additions & 1 deletion src/Directory.Build.props
Original file line numberDiff line numberDiff line change
Expand Up@@ -11,7 +11,18 @@
<NoWarn>$(NoWarn);1591</NoWarn>
<WarningsNotAsErrors>$(WarningsNotAsErrors);1591</WarningsNotAsErrors>


<CodeAnalysisRuleSet>$(MSBuildThisFileDirectory)\Source.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>

<ItemGroup>
<ProjectReference
Condition="'$(UseMLCodeAnalyzer)' != 'false' and '$(MSBuildProjectExtension)' == '.csproj'"
Include="$(MSBuildThisFileDirectory)\..\tools-local\Microsoft.ML.CodeAnalyzer\Microsoft.ML.CodeAnalyzer.csproj">
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
<OutputItemType>Analyzer</OutputItemType>
</ProjectReference>
<PackageReference Condition="'$(UseStyleCopAnalyzer)' != 'false' and '$(MSBuildProjectExtension)' == '.csproj'"
Include="StyleCop.Analyzers" Version="1.1.0-beta008" PrivateAssets="All" />
</ItemGroup>

</Project>
4 changes: 2 additions & 2 deletions src/Microsoft.ML.Api/ApiUtils.cs
Original file line numberDiff line numberDiff line change
Expand Up@@ -46,7 +46,7 @@ private static OpCode GetAssignmentOpCode(Type t)

/// <summary>
/// Each of the specialized 'peek' methods copies the appropriate field value of an instance of T
/// into the provided buffer. So, the call is 'peek(userObject, ref destination)' and the logic is
/// into the provided buffer. So, the call is 'peek(userObject, ref destination)' and the logic is
/// indentical to 'destination = userObject.##FIELD##', where ##FIELD## is defined per peek method.
/// </summary>
internal static Delegate GeneratePeek<TOwn, TRow>(InternalSchemaDefinition.Column column)
Expand DownExpand Up@@ -83,7 +83,7 @@ private static Delegate GeneratePeek<TOwn, TRow, TValue>(FieldInfo fieldInfo, Op

/// <summary>
/// Each of the specialized 'poke' methods sets the appropriate field value of an instance of T
/// to the provided value. So, the call is 'peek(userObject, providedValue)' and the logic is
/// to the provided value. So, the call is 'peek(userObject, providedValue)' and the logic is
/// indentical to 'userObject.##FIELD## = providedValue', where ##FIELD## is defined per poke method.
/// </summary>
internal static Delegate GeneratePoke<TOwn, TRow>(InternalSchemaDefinition.Column column)
Expand Down
10 changes: 5 additions & 5 deletions src/Microsoft.ML.Api/CodeGenerationUtils.cs
Original file line numberDiff line numberDiff line change
Expand Up@@ -97,12 +97,12 @@ public static string GetCSharpString(CSharpCodeProvider codeProvider, string val
}

/// <summary>
/// Gets the C# strings representing the type name for a variable corresponding to
/// the <see cref="IDataView"/> column type.
///
/// If the type is a vector, then <paramref name="useVBuffer"/> controls whether the array field is
/// Gets the C# strings representing the type name for a variable corresponding to
/// the <see cref="IDataView"/> column type.
///
/// If the type is a vector, then <paramref name="useVBuffer"/> controls whether the array field is
/// generated or <see cref="VBuffer{T}"/>.
///
///
/// If additional attributes are required, they are appended to the <paramref name="attributes"/> list.
/// </summary>
private static string GetBackingTypeName(ColumnType colType, bool useVBuffer, List<string> attributes)
Expand Down
18 changes: 9 additions & 9 deletions src/Microsoft.ML.Api/ComponentCreation.cs
Original file line numberDiff line numberDiff line change
Expand Up@@ -11,14 +11,14 @@
namespace Microsoft.ML.Runtime.Api
{
/// <summary>
/// This class defines extension methods for an <see cref="IHostEnvironment"/> to facilitate creating
/// This class defines extension methods for an <see cref="IHostEnvironment"/> to facilitate creating
/// components (loaders, transforms, trainers, scorers, evaluators, savers).
/// </summary>
public static class ComponentCreation
{
/// <summary>
/// Create a new data view which is obtained by appending all columns of all the source data views.
/// If the data views are of different length, the resulting data view will have the length equal to the
/// If the data views are of different length, the resulting data view will have the length equal to the
/// length of the shortest source.
/// </summary>
/// <param name="env">The host environment to use.</param>
Expand DownExpand Up@@ -59,11 +59,11 @@ public static RoleMappedData CreateExamples(this IHostEnvironment env, IDataView
/// Create a new <see cref="IDataView"/> over an in-memory collection of the items of user-defined type.
/// The user maintains ownership of the <paramref name="data"/> and the resulting data view will
/// never alter the contents of the <paramref name="data"/>.
/// Since <see cref="IDataView"/> is assumed to be immutable, the user is expected to not
/// Since <see cref="IDataView"/> is assumed to be immutable, the user is expected to not
/// modify the contents of <paramref name="data"/> while the data view is being actively cursored.
///
///
/// One typical usage for in-memory data view could be: create the data view, train a predictor.
/// Once the predictor is fully trained, modify the contents of the underlying collection and
/// Once the predictor is fully trained, modify the contents of the underlying collection and
/// train another predictor.
/// </summary>
/// <typeparam name="TRow">The user-defined item type.</typeparam>
Expand All@@ -88,9 +88,9 @@ public static IDataView CreateDataView<TRow>(this IHostEnvironment env, IList<TR
/// Since <see cref="IDataView"/> is assumed to be immutable, the user is expected to support
/// multiple enumeration of the <paramref name="data"/> that would return the same results, unless
/// the user knows that the data will only be cursored once.
///
///
/// One typical usage for streaming data view could be: create the data view that lazily loads data
/// as needed, then apply pre-trained transformations to it and cursor through it for transformation
/// as needed, then apply pre-trained transformations to it and cursor through it for transformation
/// results. This is how <see cref="BatchPredictionEngine{TSrc,TDst}"/> is implemented.
/// </summary>
/// <typeparam name="TRow">The user-defined item type.</typeparam>
Expand DownExpand Up@@ -191,7 +191,7 @@ public static PredictionEngine<TSrc, TDst> CreatePredictionEngine<TSrc, TDst>(th
/// <summary>
/// Create a prediction engine.
/// This encapsulates the 'classic' prediction problem, where the input is denoted by the float array of features,
/// and the output is a float score. For binary classification predictors that can output probability, there are output
/// and the output is a float score. For binary classification predictors that can output probability, there are output
/// fields that report the predicted label and probability.
/// </summary>
/// <param name="env">The host environment to use.</param>
Expand All@@ -207,7 +207,7 @@ public static SimplePredictionEngine CreateSimplePredictionEngine(this IHostEnvi

/// <summary>
/// Load the transforms (but not loader) from the model steram and apply them to the specified data.
/// It is acceptable to have no transforms in the model stream: in this case the original
/// It is acceptable to have no transforms in the model stream: in this case the original
/// <paramref name="data"/> will be returned.
/// </summary>
/// <param name="env">The host environment to use.</param>
Expand Down
16 changes: 8 additions & 8 deletions src/Microsoft.ML.Api/DataViewConstructionUtils.cs
Original file line numberDiff line numberDiff line change
Expand Up@@ -285,7 +285,7 @@ private Delegate CreateGetter(int index)
}

// REVIEW: The converting getter invokes a type conversion delegate on every call, so it's inherently slower
// than the 'direct' getter. We don't have good indication of this to the user, and the selection
// than the 'direct' getter. We don't have good indication of this to the user, and the selection
// of affected types is pretty arbitrary (signed integers and bools, but not uints and floats).
private Delegate CreateConvertingArrayGetterDelegate<TSrc, TDst>(int index, Func<TSrc, TDst> convert)
{
Expand DownExpand Up@@ -396,7 +396,7 @@ private void CheckColumnInRange(int columnIndex)
}

/// <summary>
/// An in-memory data view based on the IList of data.
/// An in-memory data view based on the IList of data.
/// Supports shuffling.
/// </summary>
private sealed class ListDataView<TRow> : DataViewBase<TRow>
Expand DownExpand Up@@ -492,11 +492,11 @@ protected override bool MoveManyCore(long count)
}

/// <summary>
/// An in-memory data view based on the IEnumerable of data.
/// An in-memory data view based on the IEnumerable of data.
/// Doesn't support shuffling.
///
///
/// This class is public because prediction engine wants to call its <see cref="SetData"/>
/// for performance reasons.
/// for performance reasons.
/// </summary>
public sealed class StreamingDataView<TRow> : DataViewBase<TRow>
where TRow : class
Expand DownExpand Up@@ -578,7 +578,7 @@ protected override bool MoveNextCore()

/// <summary>
/// This represents the 'infinite data view' over one (mutable) user-defined object.
/// The 'current row' object can be updated at any time, this will affect all the
/// The 'current row' object can be updated at any time, this will affect all the
/// newly created cursors, but not the ones already existing.
/// </summary>
public sealed class SingleRowLoopDataView<TRow> : DataViewBase<TRow>
Expand DownExpand Up@@ -731,7 +731,7 @@ public abstract partial class MetadataInfo
/// </summary>
public ColumnType MetadataType;
/// <summary>
/// The string identifier of the metadata. Some identifiers have special meaning,
/// The string identifier of the metadata. Some identifiers have special meaning,
/// like "SlotNames", but any other identifiers can be used.
/// </summary>
public readonly string Kind;
Expand All@@ -757,7 +757,7 @@ public sealed class MetadataInfo<T> : MetadataInfo
/// <summary>
/// Constructor for metadata of value type T.
/// </summary>
/// <param name="kind">The string identifier of the metadata. Some identifiers have special meaning,
/// <param name="kind">The string identifier of the metadata. Some identifiers have special meaning,
/// like "SlotNames", but any other identifiers can be used.</param>
/// <param name="value">Metadata value.</param>
/// <param name="metadataType">Type of the metadata.</param>
Expand Down
4 changes: 2 additions & 2 deletions src/Microsoft.ML.Api/GenerateCodeCommand.cs
Original file line numberDiff line numberDiff line change
Expand Up@@ -21,7 +21,7 @@ namespace Microsoft.ML.Runtime.Api
{
/// <summary>
/// Generates the sample prediction code for a given model file, with correct input and output classes.
///
///
/// REVIEW: Consider adding support for generating VBuffers instead of arrays, maybe for high dimensionality vectors.
/// </summary>
public sealed class GenerateCodeCommand : ICommand
Expand All@@ -45,7 +45,7 @@ public sealed class Arguments
ShortName = "sparse", SortOrder = 102)]
public bool SparseVectorDeclaration;

// REVIEW: currently, it's only used in unit testing to not generate the paths into the test output folder.
// REVIEW: currently, it's only used in unit testing to not generate the paths into the test output folder.
// However, it might be handy for automation scenarios, so I've added this as a hidden option.
[Argument(ArgumentType.AtMostOnce, HelpText = "A location of the model file to put into generated file", Hide = true)]
public string ModelNameOverride;
Expand Down
14 changes: 7 additions & 7 deletions src/Microsoft.ML.Api/InternalSchemaDefinition.cs
Original file line numberDiff line numberDiff line change
Expand Up@@ -76,12 +76,12 @@ private Column(string columnName, ColumnType columnType, FieldInfo fieldInfo = n
}

/// <summary>
/// Function that checks whether the InternalSchemaDefinition.Column is a valid one.
/// Function that checks whether the InternalSchemaDefinition.Column is a valid one.
/// To be valid, the Column must:
/// 1. Have non-empty values for ColumnName and ColumnType
/// 2. Have a non-empty value for FieldInfo iff it is a field column, else
/// ReturnParameterInfo and Generator iff it is a computed column
/// 3. Generator must have the method inputs (TRow rowObject,
/// 3. Generator must have the method inputs (TRow rowObject,
/// long position, ref TValue outputValue) in that order.
/// </summary>
[Conditional("DEBUG")]
Expand DownExpand Up@@ -133,7 +133,7 @@ private InternalSchemaDefinition(Column[] columns)
/// <summary>
/// Given a field info on a type, returns whether this appears to be a vector type,
/// and also the associated data kind for this type. If a data kind could not
/// be determined, this will throw.
/// be determined, this will throw.
/// </summary>
/// <param name="fieldInfo">The field info to inspect.</param>
/// <param name="isVector">Whether this appears to be a vector type.</param>
Expand All@@ -149,7 +149,7 @@ public static void GetVectorAndKind(FieldInfo fieldInfo, out bool isVector, out
/// <summary>
/// Given a parameter info on a type, returns whether this appears to be a vector type,
/// and also the associated data kind for this type. If a data kind could not
/// be determined, this will throw.
/// be determined, this will throw.
/// </summary>
/// <param name="parameterInfo">The parameter info to inspect.</param>
/// <param name="isVector">Whether this appears to be a vector type.</param>
Expand All@@ -165,7 +165,7 @@ public static void GetVectorAndKind(ParameterInfo parameterInfo, out bool isVect
/// <summary>
/// Given a type and name for a variable, returns whether this appears to be a vector type,
/// and also the associated data kind for this type. If a data kind could not
/// be determined, this will throw.
/// be determined, this will throw.
/// </summary>
/// <param name="rawType">The type of the variable to inspect.</param>
/// <param name="name">The name of the variable to inspect.</param>
Expand DownExpand Up@@ -222,7 +222,7 @@ public static InternalSchemaDefinition Create(Type userType, SchemaDefinition us
col.MemberName,
userType.FullName);

//Clause to handle the field that may be used to expose the cursor channel.
//Clause to handle the field that may be used to expose the cursor channel.
//This field does not need a column.
if (fieldInfo.FieldType == typeof(IChannel))
continue;
Expand DownExpand Up@@ -251,7 +251,7 @@ public static InternalSchemaDefinition Create(Type userType, SchemaDefinition us
}
else
{
// Make sure that the types are compatible with the declared type, including
// Make sure that the types are compatible with the declared type, including
// whether it is a vector type.
if (isVector != col.ColumnType.IsVector)
{
Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 27 additions & 0 deletions Microsoft.ML.sln
Original file line numberDiff line numberDiff line change
Expand Up@@ -5,6 +5,9 @@ MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.ML.Core", "src\Microsoft.ML.Core\Microsoft.ML.Core.csproj", "{A6CA6CC6-5D7C-4D7F-A0F5-35E14B383B0A}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{09EADF06-BE25-4228-AB53-95AE3E15B530}"
ProjectSection(SolutionItems) = preProject
src\Source.ruleset = src\Source.ruleset
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{AED9C836-31E3-4F3F-8ABC-929555D3F3C4}"
EndProject
Expand DownExpand Up@@ -88,6 +91,12 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Microsoft.ML.CpuMath", "Mic
pkg\Microsoft.ML.CpuMath\Microsoft.ML.CpuMath.symbols.nupkgproj = pkg\Microsoft.ML.CpuMath\Microsoft.ML.CpuMath.symbols.nupkgproj
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tools-local", "tools-local", "{7F13E156-3EBA-4021-84A5-CD56BA72F99E}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.ML.CodeAnalyzer", "tools-local\Microsoft.ML.CodeAnalyzer\Microsoft.ML.CodeAnalyzer.csproj", "{B4E55B2D-2A92-46E7-B72F-E76D6FD83440}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.ML.CodeAnalyzer.Tests", "test\Microsoft.ML.CodeAnalyzer.Tests\Microsoft.ML.CodeAnalyzer.Tests.csproj", "{3E4ABF07-7970-4BE6-B45B-A13D3C397545}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Expand DownExpand Up@@ -304,6 +313,22 @@ Global
{DCF46B79-1FDB-4DBA-A263-D3D64E3AAA27}.Release|Any CPU.Build.0 = Release|Any CPU
{DCF46B79-1FDB-4DBA-A263-D3D64E3AAA27}.Release-Intrinsics|Any CPU.ActiveCfg = Release|Any CPU
{DCF46B79-1FDB-4DBA-A263-D3D64E3AAA27}.Release-Intrinsics|Any CPU.Build.0 = Release|Any CPU
{B4E55B2D-2A92-46E7-B72F-E76D6FD83440}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B4E55B2D-2A92-46E7-B72F-E76D6FD83440}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B4E55B2D-2A92-46E7-B72F-E76D6FD83440}.Debug-Intrinsics|Any CPU.ActiveCfg = Debug|Any CPU
{B4E55B2D-2A92-46E7-B72F-E76D6FD83440}.Debug-Intrinsics|Any CPU.Build.0 = Debug|Any CPU
{B4E55B2D-2A92-46E7-B72F-E76D6FD83440}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B4E55B2D-2A92-46E7-B72F-E76D6FD83440}.Release|Any CPU.Build.0 = Release|Any CPU
{B4E55B2D-2A92-46E7-B72F-E76D6FD83440}.Release-Intrinsics|Any CPU.ActiveCfg = Release|Any CPU
{B4E55B2D-2A92-46E7-B72F-E76D6FD83440}.Release-Intrinsics|Any CPU.Build.0 = Release|Any CPU
{3E4ABF07-7970-4BE6-B45B-A13D3C397545}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3E4ABF07-7970-4BE6-B45B-A13D3C397545}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3E4ABF07-7970-4BE6-B45B-A13D3C397545}.Debug-Intrinsics|Any CPU.ActiveCfg = Debug|Any CPU
{3E4ABF07-7970-4BE6-B45B-A13D3C397545}.Debug-Intrinsics|Any CPU.Build.0 = Debug|Any CPU
{3E4ABF07-7970-4BE6-B45B-A13D3C397545}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3E4ABF07-7970-4BE6-B45B-A13D3C397545}.Release|Any CPU.Build.0 = Release|Any CPU
{3E4ABF07-7970-4BE6-B45B-A13D3C397545}.Release-Intrinsics|Any CPU.ActiveCfg = Release|Any CPU
{3E4ABF07-7970-4BE6-B45B-A13D3C397545}.Release-Intrinsics|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
Expand DownExpand Up@@ -340,6 +365,8 @@ Global
{001F3B4E-FBE4-4001-AFD2-A6A989CD1C25} = {09EADF06-BE25-4228-AB53-95AE3E15B530}
{DCF46B79-1FDB-4DBA-A263-D3D64E3AAA27} = {09EADF06-BE25-4228-AB53-95AE3E15B530}
{BF66A305-DF10-47E4-8D81-42049B149D2B} = {D3D38B03-B557-484D-8348-8BADEE4DF592}
{B4E55B2D-2A92-46E7-B72F-E76D6FD83440} = {7F13E156-3EBA-4021-84A5-CD56BA72F99E}
{3E4ABF07-7970-4BE6-B45B-A13D3C397545} = {AED9C836-31E3-4F3F-8ABC-929555D3F3C4}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {41165AF1-35BB-4832-A189-73060F82B01D}
Expand Down
2 changes: 1 addition & 1 deletion build/Dependencies.props
Original file line numberDiff line numberDiff line change
Expand Up@@ -7,6 +7,6 @@
<SystemCodeDomPackageVersion>4.4.0</SystemCodeDomPackageVersion>
<SystemReflectionEmitLightweightPackageVersion>4.3.0</SystemReflectionEmitLightweightPackageVersion>
<PublishSymbolsPackageVersion>1.0.0-beta-62824-02</PublishSymbolsPackageVersion>
<LightGBMPackageVersion>2.1.2.2</LightGBMPackageVersion>
<LightGBMPackageVersion>2.1.2.2</LightGBMPackageVersion>
</PropertyGroup>
</Project>
13 changes: 12 additions & 1 deletion src/Directory.Build.props
Original file line numberDiff line numberDiff line change
Expand Up@@ -11,7 +11,18 @@
<NoWarn>$(NoWarn);1591</NoWarn>
<WarningsNotAsErrors>$(WarningsNotAsErrors);1591</WarningsNotAsErrors>


<CodeAnalysisRuleSet>$(MSBuildThisFileDirectory)\Source.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>

<ItemGroup>
<ProjectReference
Condition="'$(UseMLCodeAnalyzer)' != 'false' and '$(MSBuildProjectExtension)' == '.csproj'"
Include="$(MSBuildThisFileDirectory)\..\tools-local\Microsoft.ML.CodeAnalyzer\Microsoft.ML.CodeAnalyzer.csproj">
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
<OutputItemType>Analyzer</OutputItemType>
</ProjectReference>
<PackageReference Condition="'$(UseStyleCopAnalyzer)' != 'false' and '$(MSBuildProjectExtension)' == '.csproj'"
Include="StyleCop.Analyzers" Version="1.1.0-beta008" PrivateAssets="All" />
</ItemGroup>

</Project>
4 changes: 2 additions & 2 deletions src/Microsoft.ML.Api/ApiUtils.cs
Original file line numberDiff line numberDiff line change
Expand Up@@ -46,7 +46,7 @@ private static OpCode GetAssignmentOpCode(Type t)

/// <summary>
/// Each of the specialized 'peek' methods copies the appropriate field value of an instance of T
/// into the provided buffer. So, the call is 'peek(userObject, ref destination)' and the logic is
/// into the provided buffer. So, the call is 'peek(userObject, ref destination)' and the logic is
/// indentical to 'destination = userObject.##FIELD##', where ##FIELD## is defined per peek method.
/// </summary>
internal static Delegate GeneratePeek<TOwn, TRow>(InternalSchemaDefinition.Column column)
Expand DownExpand Up@@ -83,7 +83,7 @@ private static Delegate GeneratePeek<TOwn, TRow, TValue>(FieldInfo fieldInfo, Op

/// <summary>
/// Each of the specialized 'poke' methods sets the appropriate field value of an instance of T
/// to the provided value. So, the call is 'peek(userObject, providedValue)' and the logic is
/// to the provided value. So, the call is 'peek(userObject, providedValue)' and the logic is
/// indentical to 'userObject.##FIELD## = providedValue', where ##FIELD## is defined per poke method.
/// </summary>
internal static Delegate GeneratePoke<TOwn, TRow>(InternalSchemaDefinition.Column column)
Expand Down
10 changes: 5 additions & 5 deletions src/Microsoft.ML.Api/CodeGenerationUtils.cs
Original file line numberDiff line numberDiff line change
Expand Up@@ -97,12 +97,12 @@ public static string GetCSharpString(CSharpCodeProvider codeProvider, string val
}

/// <summary>
/// Gets the C# strings representing the type name for a variable corresponding to
/// the <see cref="IDataView"/> column type.
///
/// If the type is a vector, then <paramref name="useVBuffer"/> controls whether the array field is
/// Gets the C# strings representing the type name for a variable corresponding to
/// the <see cref="IDataView"/> column type.
///
/// If the type is a vector, then <paramref name="useVBuffer"/> controls whether the array field is
/// generated or <see cref="VBuffer{T}"/>.
///
///
/// If additional attributes are required, they are appended to the <paramref name="attributes"/> list.
/// </summary>
private static string GetBackingTypeName(ColumnType colType, bool useVBuffer, List<string> attributes)
Expand Down
18 changes: 9 additions & 9 deletions src/Microsoft.ML.Api/ComponentCreation.cs
Original file line numberDiff line numberDiff line change
Expand Up@@ -11,14 +11,14 @@
namespace Microsoft.ML.Runtime.Api
{
/// <summary>
/// This class defines extension methods for an <see cref="IHostEnvironment"/> to facilitate creating
/// This class defines extension methods for an <see cref="IHostEnvironment"/> to facilitate creating
/// components (loaders, transforms, trainers, scorers, evaluators, savers).
/// </summary>
public static class ComponentCreation
{
/// <summary>
/// Create a new data view which is obtained by appending all columns of all the source data views.
/// If the data views are of different length, the resulting data view will have the length equal to the
/// If the data views are of different length, the resulting data view will have the length equal to the
/// length of the shortest source.
/// </summary>
/// <param name="env">The host environment to use.</param>
Expand DownExpand Up@@ -59,11 +59,11 @@ public static RoleMappedData CreateExamples(this IHostEnvironment env, IDataView
/// Create a new <see cref="IDataView"/> over an in-memory collection of the items of user-defined type.
/// The user maintains ownership of the <paramref name="data"/> and the resulting data view will
/// never alter the contents of the <paramref name="data"/>.
/// Since <see cref="IDataView"/> is assumed to be immutable, the user is expected to not
/// Since <see cref="IDataView"/> is assumed to be immutable, the user is expected to not
/// modify the contents of <paramref name="data"/> while the data view is being actively cursored.
///
///
/// One typical usage for in-memory data view could be: create the data view, train a predictor.
/// Once the predictor is fully trained, modify the contents of the underlying collection and
/// Once the predictor is fully trained, modify the contents of the underlying collection and
/// train another predictor.
/// </summary>
/// <typeparam name="TRow">The user-defined item type.</typeparam>
Expand All@@ -88,9 +88,9 @@ public static IDataView CreateDataView<TRow>(this IHostEnvironment env, IList<TR
/// Since <see cref="IDataView"/> is assumed to be immutable, the user is expected to support
/// multiple enumeration of the <paramref name="data"/> that would return the same results, unless
/// the user knows that the data will only be cursored once.
///
///
/// One typical usage for streaming data view could be: create the data view that lazily loads data
/// as needed, then apply pre-trained transformations to it and cursor through it for transformation
/// as needed, then apply pre-trained transformations to it and cursor through it for transformation
/// results. This is how <see cref="BatchPredictionEngine{TSrc,TDst}"/> is implemented.
/// </summary>
/// <typeparam name="TRow">The user-defined item type.</typeparam>
Expand DownExpand Up@@ -191,7 +191,7 @@ public static PredictionEngine<TSrc, TDst> CreatePredictionEngine<TSrc, TDst>(th
/// <summary>
/// Create a prediction engine.
/// This encapsulates the 'classic' prediction problem, where the input is denoted by the float array of features,
/// and the output is a float score. For binary classification predictors that can output probability, there are output
/// and the output is a float score. For binary classification predictors that can output probability, there are output
/// fields that report the predicted label and probability.
/// </summary>
/// <param name="env">The host environment to use.</param>
Expand All@@ -207,7 +207,7 @@ public static SimplePredictionEngine CreateSimplePredictionEngine(this IHostEnvi

/// <summary>
/// Load the transforms (but not loader) from the model steram and apply them to the specified data.
/// It is acceptable to have no transforms in the model stream: in this case the original
/// It is acceptable to have no transforms in the model stream: in this case the original
/// <paramref name="data"/> will be returned.
/// </summary>
/// <param name="env">The host environment to use.</param>
Expand Down
16 changes: 8 additions & 8 deletions src/Microsoft.ML.Api/DataViewConstructionUtils.cs
Original file line numberDiff line numberDiff line change
Expand Up@@ -285,7 +285,7 @@ private Delegate CreateGetter(int index)
}

// REVIEW: The converting getter invokes a type conversion delegate on every call, so it's inherently slower
// than the 'direct' getter. We don't have good indication of this to the user, and the selection
// than the 'direct' getter. We don't have good indication of this to the user, and the selection
// of affected types is pretty arbitrary (signed integers and bools, but not uints and floats).
private Delegate CreateConvertingArrayGetterDelegate<TSrc, TDst>(int index, Func<TSrc, TDst> convert)
{
Expand DownExpand Up@@ -396,7 +396,7 @@ private void CheckColumnInRange(int columnIndex)
}

/// <summary>
/// An in-memory data view based on the IList of data.
/// An in-memory data view based on the IList of data.
/// Supports shuffling.
/// </summary>
private sealed class ListDataView<TRow> : DataViewBase<TRow>
Expand DownExpand Up@@ -492,11 +492,11 @@ protected override bool MoveManyCore(long count)
}

/// <summary>
/// An in-memory data view based on the IEnumerable of data.
/// An in-memory data view based on the IEnumerable of data.
/// Doesn't support shuffling.
///
///
/// This class is public because prediction engine wants to call its <see cref="SetData"/>
/// for performance reasons.
/// for performance reasons.
/// </summary>
public sealed class StreamingDataView<TRow> : DataViewBase<TRow>
where TRow : class
Expand DownExpand Up@@ -578,7 +578,7 @@ protected override bool MoveNextCore()

/// <summary>
/// This represents the 'infinite data view' over one (mutable) user-defined object.
/// The 'current row' object can be updated at any time, this will affect all the
/// The 'current row' object can be updated at any time, this will affect all the
/// newly created cursors, but not the ones already existing.
/// </summary>
public sealed class SingleRowLoopDataView<TRow> : DataViewBase<TRow>
Expand DownExpand Up@@ -731,7 +731,7 @@ public abstract partial class MetadataInfo
/// </summary>
public ColumnType MetadataType;
/// <summary>
/// The string identifier of the metadata. Some identifiers have special meaning,
/// The string identifier of the metadata. Some identifiers have special meaning,
/// like "SlotNames", but any other identifiers can be used.
/// </summary>
public readonly string Kind;
Expand All@@ -757,7 +757,7 @@ public sealed class MetadataInfo<T> : MetadataInfo
/// <summary>
/// Constructor for metadata of value type T.
/// </summary>
/// <param name="kind">The string identifier of the metadata. Some identifiers have special meaning,
/// <param name="kind">The string identifier of the metadata. Some identifiers have special meaning,
/// like "SlotNames", but any other identifiers can be used.</param>
/// <param name="value">Metadata value.</param>
/// <param name="metadataType">Type of the metadata.</param>
Expand Down
4 changes: 2 additions & 2 deletions src/Microsoft.ML.Api/GenerateCodeCommand.cs
Original file line numberDiff line numberDiff line change
Expand Up@@ -21,7 +21,7 @@ namespace Microsoft.ML.Runtime.Api
{
/// <summary>
/// Generates the sample prediction code for a given model file, with correct input and output classes.
///
///
/// REVIEW: Consider adding support for generating VBuffers instead of arrays, maybe for high dimensionality vectors.
/// </summary>
public sealed class GenerateCodeCommand : ICommand
Expand All@@ -45,7 +45,7 @@ public sealed class Arguments
ShortName = "sparse", SortOrder = 102)]
public bool SparseVectorDeclaration;

// REVIEW: currently, it's only used in unit testing to not generate the paths into the test output folder.
// REVIEW: currently, it's only used in unit testing to not generate the paths into the test output folder.
// However, it might be handy for automation scenarios, so I've added this as a hidden option.
[Argument(ArgumentType.AtMostOnce, HelpText = "A location of the model file to put into generated file", Hide = true)]
public string ModelNameOverride;
Expand Down
14 changes: 7 additions & 7 deletions src/Microsoft.ML.Api/InternalSchemaDefinition.cs
Original file line numberDiff line numberDiff line change
Expand Up@@ -76,12 +76,12 @@ private Column(string columnName, ColumnType columnType, FieldInfo fieldInfo = n
}

/// <summary>
/// Function that checks whether the InternalSchemaDefinition.Column is a valid one.
/// Function that checks whether the InternalSchemaDefinition.Column is a valid one.
/// To be valid, the Column must:
/// 1. Have non-empty values for ColumnName and ColumnType
/// 2. Have a non-empty value for FieldInfo iff it is a field column, else
/// ReturnParameterInfo and Generator iff it is a computed column
/// 3. Generator must have the method inputs (TRow rowObject,
/// 3. Generator must have the method inputs (TRow rowObject,
/// long position, ref TValue outputValue) in that order.
/// </summary>
[Conditional("DEBUG")]
Expand DownExpand Up@@ -133,7 +133,7 @@ private InternalSchemaDefinition(Column[] columns)
/// <summary>
/// Given a field info on a type, returns whether this appears to be a vector type,
/// and also the associated data kind for this type. If a data kind could not
/// be determined, this will throw.
/// be determined, this will throw.
/// </summary>
/// <param name="fieldInfo">The field info to inspect.</param>
/// <param name="isVector">Whether this appears to be a vector type.</param>
Expand All@@ -149,7 +149,7 @@ public static void GetVectorAndKind(FieldInfo fieldInfo, out bool isVector, out
/// <summary>
/// Given a parameter info on a type, returns whether this appears to be a vector type,
/// and also the associated data kind for this type. If a data kind could not
/// be determined, this will throw.
/// be determined, this will throw.
/// </summary>
/// <param name="parameterInfo">The parameter info to inspect.</param>
/// <param name="isVector">Whether this appears to be a vector type.</param>
Expand All@@ -165,7 +165,7 @@ public static void GetVectorAndKind(ParameterInfo parameterInfo, out bool isVect
/// <summary>
/// Given a type and name for a variable, returns whether this appears to be a vector type,
/// and also the associated data kind for this type. If a data kind could not
/// be determined, this will throw.
/// be determined, this will throw.
/// </summary>
/// <param name="rawType">The type of the variable to inspect.</param>
/// <param name="name">The name of the variable to inspect.</param>
Expand DownExpand Up@@ -222,7 +222,7 @@ public static InternalSchemaDefinition Create(Type userType, SchemaDefinition us
col.MemberName,
userType.FullName);

//Clause to handle the field that may be used to expose the cursor channel.
//Clause to handle the field that may be used to expose the cursor channel.
//This field does not need a column.
if (fieldInfo.FieldType == typeof(IChannel))
continue;
Expand DownExpand Up@@ -251,7 +251,7 @@ public static InternalSchemaDefinition Create(Type userType, SchemaDefinition us
}
else
{
// Make sure that the types are compatible with the declared type, including
// Make sure that the types are compatible with the declared type, including
// whether it is a vector type.
if (isVector != col.ColumnType.IsVector)
{
Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 27 additions & 0 deletions Microsoft.ML.sln
Original file line numberDiff line numberDiff line change
Expand Up@@ -5,6 +5,9 @@ MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.ML.Core", "src\Microsoft.ML.Core\Microsoft.ML.Core.csproj", "{A6CA6CC6-5D7C-4D7F-A0F5-35E14B383B0A}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{09EADF06-BE25-4228-AB53-95AE3E15B530}"
ProjectSection(SolutionItems) = preProject
src\Source.ruleset = src\Source.ruleset
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{AED9C836-31E3-4F3F-8ABC-929555D3F3C4}"
EndProject
Expand DownExpand Up@@ -88,6 +91,12 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Microsoft.ML.CpuMath", "Mic
pkg\Microsoft.ML.CpuMath\Microsoft.ML.CpuMath.symbols.nupkgproj = pkg\Microsoft.ML.CpuMath\Microsoft.ML.CpuMath.symbols.nupkgproj
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tools-local", "tools-local", "{7F13E156-3EBA-4021-84A5-CD56BA72F99E}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.ML.CodeAnalyzer", "tools-local\Microsoft.ML.CodeAnalyzer\Microsoft.ML.CodeAnalyzer.csproj", "{B4E55B2D-2A92-46E7-B72F-E76D6FD83440}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.ML.CodeAnalyzer.Tests", "test\Microsoft.ML.CodeAnalyzer.Tests\Microsoft.ML.CodeAnalyzer.Tests.csproj", "{3E4ABF07-7970-4BE6-B45B-A13D3C397545}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Expand DownExpand Up@@ -304,6 +313,22 @@ Global
{DCF46B79-1FDB-4DBA-A263-D3D64E3AAA27}.Release|Any CPU.Build.0 = Release|Any CPU
{DCF46B79-1FDB-4DBA-A263-D3D64E3AAA27}.Release-Intrinsics|Any CPU.ActiveCfg = Release|Any CPU
{DCF46B79-1FDB-4DBA-A263-D3D64E3AAA27}.Release-Intrinsics|Any CPU.Build.0 = Release|Any CPU
{B4E55B2D-2A92-46E7-B72F-E76D6FD83440}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B4E55B2D-2A92-46E7-B72F-E76D6FD83440}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B4E55B2D-2A92-46E7-B72F-E76D6FD83440}.Debug-Intrinsics|Any CPU.ActiveCfg = Debug|Any CPU
{B4E55B2D-2A92-46E7-B72F-E76D6FD83440}.Debug-Intrinsics|Any CPU.Build.0 = Debug|Any CPU
{B4E55B2D-2A92-46E7-B72F-E76D6FD83440}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B4E55B2D-2A92-46E7-B72F-E76D6FD83440}.Release|Any CPU.Build.0 = Release|Any CPU
{B4E55B2D-2A92-46E7-B72F-E76D6FD83440}.Release-Intrinsics|Any CPU.ActiveCfg = Release|Any CPU
{B4E55B2D-2A92-46E7-B72F-E76D6FD83440}.Release-Intrinsics|Any CPU.Build.0 = Release|Any CPU
{3E4ABF07-7970-4BE6-B45B-A13D3C397545}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3E4ABF07-7970-4BE6-B45B-A13D3C397545}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3E4ABF07-7970-4BE6-B45B-A13D3C397545}.Debug-Intrinsics|Any CPU.ActiveCfg = Debug|Any CPU
{3E4ABF07-7970-4BE6-B45B-A13D3C397545}.Debug-Intrinsics|Any CPU.Build.0 = Debug|Any CPU
{3E4ABF07-7970-4BE6-B45B-A13D3C397545}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3E4ABF07-7970-4BE6-B45B-A13D3C397545}.Release|Any CPU.Build.0 = Release|Any CPU
{3E4ABF07-7970-4BE6-B45B-A13D3C397545}.Release-Intrinsics|Any CPU.ActiveCfg = Release|Any CPU
{3E4ABF07-7970-4BE6-B45B-A13D3C397545}.Release-Intrinsics|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
Expand DownExpand Up@@ -340,6 +365,8 @@ Global
{001F3B4E-FBE4-4001-AFD2-A6A989CD1C25} = {09EADF06-BE25-4228-AB53-95AE3E15B530}
{DCF46B79-1FDB-4DBA-A263-D3D64E3AAA27} = {09EADF06-BE25-4228-AB53-95AE3E15B530}
{BF66A305-DF10-47E4-8D81-42049B149D2B} = {D3D38B03-B557-484D-8348-8BADEE4DF592}
{B4E55B2D-2A92-46E7-B72F-E76D6FD83440} = {7F13E156-3EBA-4021-84A5-CD56BA72F99E}
{3E4ABF07-7970-4BE6-B45B-A13D3C397545} = {AED9C836-31E3-4F3F-8ABC-929555D3F3C4}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {41165AF1-35BB-4832-A189-73060F82B01D}
Expand Down
2 changes: 1 addition & 1 deletion build/Dependencies.props
Original file line numberDiff line numberDiff line change
Expand Up@@ -7,6 +7,6 @@
<SystemCodeDomPackageVersion>4.4.0</SystemCodeDomPackageVersion>
<SystemReflectionEmitLightweightPackageVersion>4.3.0</SystemReflectionEmitLightweightPackageVersion>
<PublishSymbolsPackageVersion>1.0.0-beta-62824-02</PublishSymbolsPackageVersion>
<LightGBMPackageVersion>2.1.2.2</LightGBMPackageVersion>
<LightGBMPackageVersion>2.1.2.2</LightGBMPackageVersion>
</PropertyGroup>
</Project>
13 changes: 12 additions & 1 deletion src/Directory.Build.props
Original file line numberDiff line numberDiff line change
Expand Up@@ -11,7 +11,18 @@
<NoWarn>$(NoWarn);1591</NoWarn>
<WarningsNotAsErrors>$(WarningsNotAsErrors);1591</WarningsNotAsErrors>


<CodeAnalysisRuleSet>$(MSBuildThisFileDirectory)\Source.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>

<ItemGroup>
<ProjectReference
Condition="'$(UseMLCodeAnalyzer)' != 'false' and '$(MSBuildProjectExtension)' == '.csproj'"
Include="$(MSBuildThisFileDirectory)\..\tools-local\Microsoft.ML.CodeAnalyzer\Microsoft.ML.CodeAnalyzer.csproj">
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
<OutputItemType>Analyzer</OutputItemType>
</ProjectReference>
<PackageReference Condition="'$(UseStyleCopAnalyzer)' != 'false' and '$(MSBuildProjectExtension)' == '.csproj'"
Include="StyleCop.Analyzers" Version="1.1.0-beta008" PrivateAssets="All" />
</ItemGroup>

</Project>
4 changes: 2 additions & 2 deletions src/Microsoft.ML.Api/ApiUtils.cs
Original file line numberDiff line numberDiff line change
Expand Up@@ -46,7 +46,7 @@ private static OpCode GetAssignmentOpCode(Type t)

/// <summary>
/// Each of the specialized 'peek' methods copies the appropriate field value of an instance of T
/// into the provided buffer. So, the call is 'peek(userObject, ref destination)' and the logic is
/// into the provided buffer. So, the call is 'peek(userObject, ref destination)' and the logic is
/// indentical to 'destination = userObject.##FIELD##', where ##FIELD## is defined per peek method.
/// </summary>
internal static Delegate GeneratePeek<TOwn, TRow>(InternalSchemaDefinition.Column column)
Expand DownExpand Up@@ -83,7 +83,7 @@ private static Delegate GeneratePeek<TOwn, TRow, TValue>(FieldInfo fieldInfo, Op

/// <summary>
/// Each of the specialized 'poke' methods sets the appropriate field value of an instance of T
/// to the provided value. So, the call is 'peek(userObject, providedValue)' and the logic is
/// to the provided value. So, the call is 'peek(userObject, providedValue)' and the logic is
/// indentical to 'userObject.##FIELD## = providedValue', where ##FIELD## is defined per poke method.
/// </summary>
internal static Delegate GeneratePoke<TOwn, TRow>(InternalSchemaDefinition.Column column)
Expand Down
10 changes: 5 additions & 5 deletions src/Microsoft.ML.Api/CodeGenerationUtils.cs
Original file line numberDiff line numberDiff line change
Expand Up@@ -97,12 +97,12 @@ public static string GetCSharpString(CSharpCodeProvider codeProvider, string val
}

/// <summary>
/// Gets the C# strings representing the type name for a variable corresponding to
/// the <see cref="IDataView"/> column type.
///
/// If the type is a vector, then <paramref name="useVBuffer"/> controls whether the array field is
/// Gets the C# strings representing the type name for a variable corresponding to
/// the <see cref="IDataView"/> column type.
///
/// If the type is a vector, then <paramref name="useVBuffer"/> controls whether the array field is
/// generated or <see cref="VBuffer{T}"/>.
///
///
/// If additional attributes are required, they are appended to the <paramref name="attributes"/> list.
/// </summary>
private static string GetBackingTypeName(ColumnType colType, bool useVBuffer, List<string> attributes)
Expand Down
18 changes: 9 additions & 9 deletions src/Microsoft.ML.Api/ComponentCreation.cs
Original file line numberDiff line numberDiff line change
Expand Up@@ -11,14 +11,14 @@
namespace Microsoft.ML.Runtime.Api
{
/// <summary>
/// This class defines extension methods for an <see cref="IHostEnvironment"/> to facilitate creating
/// This class defines extension methods for an <see cref="IHostEnvironment"/> to facilitate creating
/// components (loaders, transforms, trainers, scorers, evaluators, savers).
/// </summary>
public static class ComponentCreation
{
/// <summary>
/// Create a new data view which is obtained by appending all columns of all the source data views.
/// If the data views are of different length, the resulting data view will have the length equal to the
/// If the data views are of different length, the resulting data view will have the length equal to the
/// length of the shortest source.
/// </summary>
/// <param name="env">The host environment to use.</param>
Expand DownExpand Up@@ -59,11 +59,11 @@ public static RoleMappedData CreateExamples(this IHostEnvironment env, IDataView
/// Create a new <see cref="IDataView"/> over an in-memory collection of the items of user-defined type.
/// The user maintains ownership of the <paramref name="data"/> and the resulting data view will
/// never alter the contents of the <paramref name="data"/>.
/// Since <see cref="IDataView"/> is assumed to be immutable, the user is expected to not
/// Since <see cref="IDataView"/> is assumed to be immutable, the user is expected to not
/// modify the contents of <paramref name="data"/> while the data view is being actively cursored.
///
///
/// One typical usage for in-memory data view could be: create the data view, train a predictor.
/// Once the predictor is fully trained, modify the contents of the underlying collection and
/// Once the predictor is fully trained, modify the contents of the underlying collection and
/// train another predictor.
/// </summary>
/// <typeparam name="TRow">The user-defined item type.</typeparam>
Expand All@@ -88,9 +88,9 @@ public static IDataView CreateDataView<TRow>(this IHostEnvironment env, IList<TR
/// Since <see cref="IDataView"/> is assumed to be immutable, the user is expected to support
/// multiple enumeration of the <paramref name="data"/> that would return the same results, unless
/// the user knows that the data will only be cursored once.
///
///
/// One typical usage for streaming data view could be: create the data view that lazily loads data
/// as needed, then apply pre-trained transformations to it and cursor through it for transformation
/// as needed, then apply pre-trained transformations to it and cursor through it for transformation
/// results. This is how <see cref="BatchPredictionEngine{TSrc,TDst}"/> is implemented.
/// </summary>
/// <typeparam name="TRow">The user-defined item type.</typeparam>
Expand DownExpand Up@@ -191,7 +191,7 @@ public static PredictionEngine<TSrc, TDst> CreatePredictionEngine<TSrc, TDst>(th
/// <summary>
/// Create a prediction engine.
/// This encapsulates the 'classic' prediction problem, where the input is denoted by the float array of features,
/// and the output is a float score. For binary classification predictors that can output probability, there are output
/// and the output is a float score. For binary classification predictors that can output probability, there are output
/// fields that report the predicted label and probability.
/// </summary>
/// <param name="env">The host environment to use.</param>
Expand All@@ -207,7 +207,7 @@ public static SimplePredictionEngine CreateSimplePredictionEngine(this IHostEnvi

/// <summary>
/// Load the transforms (but not loader) from the model steram and apply them to the specified data.
/// It is acceptable to have no transforms in the model stream: in this case the original
/// It is acceptable to have no transforms in the model stream: in this case the original
/// <paramref name="data"/> will be returned.
/// </summary>
/// <param name="env">The host environment to use.</param>
Expand Down
16 changes: 8 additions & 8 deletions src/Microsoft.ML.Api/DataViewConstructionUtils.cs
Original file line numberDiff line numberDiff line change
Expand Up@@ -285,7 +285,7 @@ private Delegate CreateGetter(int index)
}

// REVIEW: The converting getter invokes a type conversion delegate on every call, so it's inherently slower
// than the 'direct' getter. We don't have good indication of this to the user, and the selection
// than the 'direct' getter. We don't have good indication of this to the user, and the selection
// of affected types is pretty arbitrary (signed integers and bools, but not uints and floats).
private Delegate CreateConvertingArrayGetterDelegate<TSrc, TDst>(int index, Func<TSrc, TDst> convert)
{
Expand DownExpand Up@@ -396,7 +396,7 @@ private void CheckColumnInRange(int columnIndex)
}

/// <summary>
/// An in-memory data view based on the IList of data.
/// An in-memory data view based on the IList of data.
/// Supports shuffling.
/// </summary>
private sealed class ListDataView<TRow> : DataViewBase<TRow>
Expand DownExpand Up@@ -492,11 +492,11 @@ protected override bool MoveManyCore(long count)
}

/// <summary>
/// An in-memory data view based on the IEnumerable of data.
/// An in-memory data view based on the IEnumerable of data.
/// Doesn't support shuffling.
///
///
/// This class is public because prediction engine wants to call its <see cref="SetData"/>
/// for performance reasons.
/// for performance reasons.
/// </summary>
public sealed class StreamingDataView<TRow> : DataViewBase<TRow>
where TRow : class
Expand DownExpand Up@@ -578,7 +578,7 @@ protected override bool MoveNextCore()

/// <summary>
/// This represents the 'infinite data view' over one (mutable) user-defined object.
/// The 'current row' object can be updated at any time, this will affect all the
/// The 'current row' object can be updated at any time, this will affect all the
/// newly created cursors, but not the ones already existing.
/// </summary>
public sealed class SingleRowLoopDataView<TRow> : DataViewBase<TRow>
Expand DownExpand Up@@ -731,7 +731,7 @@ public abstract partial class MetadataInfo
/// </summary>
public ColumnType MetadataType;
/// <summary>
/// The string identifier of the metadata. Some identifiers have special meaning,
/// The string identifier of the metadata. Some identifiers have special meaning,
/// like "SlotNames", but any other identifiers can be used.
/// </summary>
public readonly string Kind;
Expand All@@ -757,7 +757,7 @@ public sealed class MetadataInfo<T> : MetadataInfo
/// <summary>
/// Constructor for metadata of value type T.
/// </summary>
/// <param name="kind">The string identifier of the metadata. Some identifiers have special meaning,
/// <param name="kind">The string identifier of the metadata. Some identifiers have special meaning,
/// like "SlotNames", but any other identifiers can be used.</param>
/// <param name="value">Metadata value.</param>
/// <param name="metadataType">Type of the metadata.</param>
Expand Down
4 changes: 2 additions & 2 deletions src/Microsoft.ML.Api/GenerateCodeCommand.cs
Original file line numberDiff line numberDiff line change
Expand Up@@ -21,7 +21,7 @@ namespace Microsoft.ML.Runtime.Api
{
/// <summary>
/// Generates the sample prediction code for a given model file, with correct input and output classes.
///
///
/// REVIEW: Consider adding support for generating VBuffers instead of arrays, maybe for high dimensionality vectors.
/// </summary>
public sealed class GenerateCodeCommand : ICommand
Expand All@@ -45,7 +45,7 @@ public sealed class Arguments
ShortName = "sparse", SortOrder = 102)]
public bool SparseVectorDeclaration;

// REVIEW: currently, it's only used in unit testing to not generate the paths into the test output folder.
// REVIEW: currently, it's only used in unit testing to not generate the paths into the test output folder.
// However, it might be handy for automation scenarios, so I've added this as a hidden option.
[Argument(ArgumentType.AtMostOnce, HelpText = "A location of the model file to put into generated file", Hide = true)]
public string ModelNameOverride;
Expand Down
14 changes: 7 additions & 7 deletions src/Microsoft.ML.Api/InternalSchemaDefinition.cs
Original file line numberDiff line numberDiff line change
Expand Up@@ -76,12 +76,12 @@ private Column(string columnName, ColumnType columnType, FieldInfo fieldInfo = n
}

/// <summary>
/// Function that checks whether the InternalSchemaDefinition.Column is a valid one.
/// Function that checks whether the InternalSchemaDefinition.Column is a valid one.
/// To be valid, the Column must:
/// 1. Have non-empty values for ColumnName and ColumnType
/// 2. Have a non-empty value for FieldInfo iff it is a field column, else
/// ReturnParameterInfo and Generator iff it is a computed column
/// 3. Generator must have the method inputs (TRow rowObject,
/// 3. Generator must have the method inputs (TRow rowObject,
/// long position, ref TValue outputValue) in that order.
/// </summary>
[Conditional("DEBUG")]
Expand DownExpand Up@@ -133,7 +133,7 @@ private InternalSchemaDefinition(Column[] columns)
/// <summary>
/// Given a field info on a type, returns whether this appears to be a vector type,
/// and also the associated data kind for this type. If a data kind could not
/// be determined, this will throw.
/// be determined, this will throw.
/// </summary>
/// <param name="fieldInfo">The field info to inspect.</param>
/// <param name="isVector">Whether this appears to be a vector type.</param>
Expand All@@ -149,7 +149,7 @@ public static void GetVectorAndKind(FieldInfo fieldInfo, out bool isVector, out
/// <summary>
/// Given a parameter info on a type, returns whether this appears to be a vector type,
/// and also the associated data kind for this type. If a data kind could not
/// be determined, this will throw.
/// be determined, this will throw.
/// </summary>
/// <param name="parameterInfo">The parameter info to inspect.</param>
/// <param name="isVector">Whether this appears to be a vector type.</param>
Expand All@@ -165,7 +165,7 @@ public static void GetVectorAndKind(ParameterInfo parameterInfo, out bool isVect
/// <summary>
/// Given a type and name for a variable, returns whether this appears to be a vector type,
/// and also the associated data kind for this type. If a data kind could not
/// be determined, this will throw.
/// be determined, this will throw.
/// </summary>
/// <param name="rawType">The type of the variable to inspect.</param>
/// <param name="name">The name of the variable to inspect.</param>
Expand DownExpand Up@@ -222,7 +222,7 @@ public static InternalSchemaDefinition Create(Type userType, SchemaDefinition us
col.MemberName,
userType.FullName);

//Clause to handle the field that may be used to expose the cursor channel.
//Clause to handle the field that may be used to expose the cursor channel.
//This field does not need a column.
if (fieldInfo.FieldType == typeof(IChannel))
continue;
Expand DownExpand Up@@ -251,7 +251,7 @@ public static InternalSchemaDefinition Create(Type userType, SchemaDefinition us
}
else
{
// Make sure that the types are compatible with the declared type, including
// Make sure that the types are compatible with the declared type, including
// whether it is a vector type.
if (isVector != col.ColumnType.IsVector)
{
Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 27 additions & 0 deletions Microsoft.ML.sln
Original file line numberDiff line numberDiff line change
Expand Up@@ -5,6 +5,9 @@ MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.ML.Core", "src\Microsoft.ML.Core\Microsoft.ML.Core.csproj", "{A6CA6CC6-5D7C-4D7F-A0F5-35E14B383B0A}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{09EADF06-BE25-4228-AB53-95AE3E15B530}"
ProjectSection(SolutionItems) = preProject
src\Source.ruleset = src\Source.ruleset
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{AED9C836-31E3-4F3F-8ABC-929555D3F3C4}"
EndProject
Expand DownExpand Up@@ -88,6 +91,12 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Microsoft.ML.CpuMath", "Mic
pkg\Microsoft.ML.CpuMath\Microsoft.ML.CpuMath.symbols.nupkgproj = pkg\Microsoft.ML.CpuMath\Microsoft.ML.CpuMath.symbols.nupkgproj
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tools-local", "tools-local", "{7F13E156-3EBA-4021-84A5-CD56BA72F99E}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.ML.CodeAnalyzer", "tools-local\Microsoft.ML.CodeAnalyzer\Microsoft.ML.CodeAnalyzer.csproj", "{B4E55B2D-2A92-46E7-B72F-E76D6FD83440}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.ML.CodeAnalyzer.Tests", "test\Microsoft.ML.CodeAnalyzer.Tests\Microsoft.ML.CodeAnalyzer.Tests.csproj", "{3E4ABF07-7970-4BE6-B45B-A13D3C397545}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Expand DownExpand Up@@ -304,6 +313,22 @@ Global
{DCF46B79-1FDB-4DBA-A263-D3D64E3AAA27}.Release|Any CPU.Build.0 = Release|Any CPU
{DCF46B79-1FDB-4DBA-A263-D3D64E3AAA27}.Release-Intrinsics|Any CPU.ActiveCfg = Release|Any CPU
{DCF46B79-1FDB-4DBA-A263-D3D64E3AAA27}.Release-Intrinsics|Any CPU.Build.0 = Release|Any CPU
{B4E55B2D-2A92-46E7-B72F-E76D6FD83440}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B4E55B2D-2A92-46E7-B72F-E76D6FD83440}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B4E55B2D-2A92-46E7-B72F-E76D6FD83440}.Debug-Intrinsics|Any CPU.ActiveCfg = Debug|Any CPU
{B4E55B2D-2A92-46E7-B72F-E76D6FD83440}.Debug-Intrinsics|Any CPU.Build.0 = Debug|Any CPU
{B4E55B2D-2A92-46E7-B72F-E76D6FD83440}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B4E55B2D-2A92-46E7-B72F-E76D6FD83440}.Release|Any CPU.Build.0 = Release|Any CPU
{B4E55B2D-2A92-46E7-B72F-E76D6FD83440}.Release-Intrinsics|Any CPU.ActiveCfg = Release|Any CPU
{B4E55B2D-2A92-46E7-B72F-E76D6FD83440}.Release-Intrinsics|Any CPU.Build.0 = Release|Any CPU
{3E4ABF07-7970-4BE6-B45B-A13D3C397545}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3E4ABF07-7970-4BE6-B45B-A13D3C397545}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3E4ABF07-7970-4BE6-B45B-A13D3C397545}.Debug-Intrinsics|Any CPU.ActiveCfg = Debug|Any CPU
{3E4ABF07-7970-4BE6-B45B-A13D3C397545}.Debug-Intrinsics|Any CPU.Build.0 = Debug|Any CPU
{3E4ABF07-7970-4BE6-B45B-A13D3C397545}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3E4ABF07-7970-4BE6-B45B-A13D3C397545}.Release|Any CPU.Build.0 = Release|Any CPU
{3E4ABF07-7970-4BE6-B45B-A13D3C397545}.Release-Intrinsics|Any CPU.ActiveCfg = Release|Any CPU
{3E4ABF07-7970-4BE6-B45B-A13D3C397545}.Release-Intrinsics|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
Expand DownExpand Up@@ -340,6 +365,8 @@ Global
{001F3B4E-FBE4-4001-AFD2-A6A989CD1C25} = {09EADF06-BE25-4228-AB53-95AE3E15B530}
{DCF46B79-1FDB-4DBA-A263-D3D64E3AAA27} = {09EADF06-BE25-4228-AB53-95AE3E15B530}
{BF66A305-DF10-47E4-8D81-42049B149D2B} = {D3D38B03-B557-484D-8348-8BADEE4DF592}
{B4E55B2D-2A92-46E7-B72F-E76D6FD83440} = {7F13E156-3EBA-4021-84A5-CD56BA72F99E}
{3E4ABF07-7970-4BE6-B45B-A13D3C397545} = {AED9C836-31E3-4F3F-8ABC-929555D3F3C4}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {41165AF1-35BB-4832-A189-73060F82B01D}
Expand Down
2 changes: 1 addition & 1 deletion build/Dependencies.props
Original file line numberDiff line numberDiff line change
Expand Up@@ -7,6 +7,6 @@
<SystemCodeDomPackageVersion>4.4.0</SystemCodeDomPackageVersion>
<SystemReflectionEmitLightweightPackageVersion>4.3.0</SystemReflectionEmitLightweightPackageVersion>
<PublishSymbolsPackageVersion>1.0.0-beta-62824-02</PublishSymbolsPackageVersion>
<LightGBMPackageVersion>2.1.2.2</LightGBMPackageVersion>
<LightGBMPackageVersion>2.1.2.2</LightGBMPackageVersion>
</PropertyGroup>
</Project>
13 changes: 12 additions & 1 deletion src/Directory.Build.props
Original file line numberDiff line numberDiff line change
Expand Up@@ -11,7 +11,18 @@
<NoWarn>$(NoWarn);1591</NoWarn>
<WarningsNotAsErrors>$(WarningsNotAsErrors);1591</WarningsNotAsErrors>


<CodeAnalysisRuleSet>$(MSBuildThisFileDirectory)\Source.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>

<ItemGroup>
<ProjectReference
Condition="'$(UseMLCodeAnalyzer)' != 'false' and '$(MSBuildProjectExtension)' == '.csproj'"
Include="$(MSBuildThisFileDirectory)\..\tools-local\Microsoft.ML.CodeAnalyzer\Microsoft.ML.CodeAnalyzer.csproj">
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
<OutputItemType>Analyzer</OutputItemType>
</ProjectReference>
<PackageReference Condition="'$(UseStyleCopAnalyzer)' != 'false' and '$(MSBuildProjectExtension)' == '.csproj'"
Include="StyleCop.Analyzers" Version="1.1.0-beta008" PrivateAssets="All" />
</ItemGroup>

</Project>
4 changes: 2 additions & 2 deletions src/Microsoft.ML.Api/ApiUtils.cs
Original file line numberDiff line numberDiff line change
Expand Up@@ -46,7 +46,7 @@ private static OpCode GetAssignmentOpCode(Type t)

/// <summary>
/// Each of the specialized 'peek' methods copies the appropriate field value of an instance of T
/// into the provided buffer. So, the call is 'peek(userObject, ref destination)' and the logic is
/// into the provided buffer. So, the call is 'peek(userObject, ref destination)' and the logic is
/// indentical to 'destination = userObject.##FIELD##', where ##FIELD## is defined per peek method.
/// </summary>
internal static Delegate GeneratePeek<TOwn, TRow>(InternalSchemaDefinition.Column column)
Expand DownExpand Up@@ -83,7 +83,7 @@ private static Delegate GeneratePeek<TOwn, TRow, TValue>(FieldInfo fieldInfo, Op

/// <summary>
/// Each of the specialized 'poke' methods sets the appropriate field value of an instance of T
/// to the provided value. So, the call is 'peek(userObject, providedValue)' and the logic is
/// to the provided value. So, the call is 'peek(userObject, providedValue)' and the logic is
/// indentical to 'userObject.##FIELD## = providedValue', where ##FIELD## is defined per poke method.
/// </summary>
internal static Delegate GeneratePoke<TOwn, TRow>(InternalSchemaDefinition.Column column)
Expand Down
10 changes: 5 additions & 5 deletions src/Microsoft.ML.Api/CodeGenerationUtils.cs
Original file line numberDiff line numberDiff line change
Expand Up@@ -97,12 +97,12 @@ public static string GetCSharpString(CSharpCodeProvider codeProvider, string val
}

/// <summary>
/// Gets the C# strings representing the type name for a variable corresponding to
/// the <see cref="IDataView"/> column type.
///
/// If the type is a vector, then <paramref name="useVBuffer"/> controls whether the array field is
/// Gets the C# strings representing the type name for a variable corresponding to
/// the <see cref="IDataView"/> column type.
///
/// If the type is a vector, then <paramref name="useVBuffer"/> controls whether the array field is
/// generated or <see cref="VBuffer{T}"/>.
///
///
/// If additional attributes are required, they are appended to the <paramref name="attributes"/> list.
/// </summary>
private static string GetBackingTypeName(ColumnType colType, bool useVBuffer, List<string> attributes)
Expand Down
18 changes: 9 additions & 9 deletions src/Microsoft.ML.Api/ComponentCreation.cs
Original file line numberDiff line numberDiff line change
Expand Up@@ -11,14 +11,14 @@
namespace Microsoft.ML.Runtime.Api
{
/// <summary>
/// This class defines extension methods for an <see cref="IHostEnvironment"/> to facilitate creating
/// This class defines extension methods for an <see cref="IHostEnvironment"/> to facilitate creating
/// components (loaders, transforms, trainers, scorers, evaluators, savers).
/// </summary>
public static class ComponentCreation
{
/// <summary>
/// Create a new data view which is obtained by appending all columns of all the source data views.
/// If the data views are of different length, the resulting data view will have the length equal to the
/// If the data views are of different length, the resulting data view will have the length equal to the
/// length of the shortest source.
/// </summary>
/// <param name="env">The host environment to use.</param>
Expand DownExpand Up@@ -59,11 +59,11 @@ public static RoleMappedData CreateExamples(this IHostEnvironment env, IDataView
/// Create a new <see cref="IDataView"/> over an in-memory collection of the items of user-defined type.
/// The user maintains ownership of the <paramref name="data"/> and the resulting data view will
/// never alter the contents of the <paramref name="data"/>.
/// Since <see cref="IDataView"/> is assumed to be immutable, the user is expected to not
/// Since <see cref="IDataView"/> is assumed to be immutable, the user is expected to not
/// modify the contents of <paramref name="data"/> while the data view is being actively cursored.
///
///
/// One typical usage for in-memory data view could be: create the data view, train a predictor.
/// Once the predictor is fully trained, modify the contents of the underlying collection and
/// Once the predictor is fully trained, modify the contents of the underlying collection and
/// train another predictor.
/// </summary>
/// <typeparam name="TRow">The user-defined item type.</typeparam>
Expand All@@ -88,9 +88,9 @@ public static IDataView CreateDataView<TRow>(this IHostEnvironment env, IList<TR
/// Since <see cref="IDataView"/> is assumed to be immutable, the user is expected to support
/// multiple enumeration of the <paramref name="data"/> that would return the same results, unless
/// the user knows that the data will only be cursored once.
///
///
/// One typical usage for streaming data view could be: create the data view that lazily loads data
/// as needed, then apply pre-trained transformations to it and cursor through it for transformation
/// as needed, then apply pre-trained transformations to it and cursor through it for transformation
/// results. This is how <see cref="BatchPredictionEngine{TSrc,TDst}"/> is implemented.
/// </summary>
/// <typeparam name="TRow">The user-defined item type.</typeparam>
Expand DownExpand Up@@ -191,7 +191,7 @@ public static PredictionEngine<TSrc, TDst> CreatePredictionEngine<TSrc, TDst>(th
/// <summary>
/// Create a prediction engine.
/// This encapsulates the 'classic' prediction problem, where the input is denoted by the float array of features,
/// and the output is a float score. For binary classification predictors that can output probability, there are output
/// and the output is a float score. For binary classification predictors that can output probability, there are output
/// fields that report the predicted label and probability.
/// </summary>
/// <param name="env">The host environment to use.</param>
Expand All@@ -207,7 +207,7 @@ public static SimplePredictionEngine CreateSimplePredictionEngine(this IHostEnvi

/// <summary>
/// Load the transforms (but not loader) from the model steram and apply them to the specified data.
/// It is acceptable to have no transforms in the model stream: in this case the original
/// It is acceptable to have no transforms in the model stream: in this case the original
/// <paramref name="data"/> will be returned.
/// </summary>
/// <param name="env">The host environment to use.</param>
Expand Down
16 changes: 8 additions & 8 deletions src/Microsoft.ML.Api/DataViewConstructionUtils.cs
Original file line numberDiff line numberDiff line change
Expand Up@@ -285,7 +285,7 @@ private Delegate CreateGetter(int index)
}

// REVIEW: The converting getter invokes a type conversion delegate on every call, so it's inherently slower
// than the 'direct' getter. We don't have good indication of this to the user, and the selection
// than the 'direct' getter. We don't have good indication of this to the user, and the selection
// of affected types is pretty arbitrary (signed integers and bools, but not uints and floats).
private Delegate CreateConvertingArrayGetterDelegate<TSrc, TDst>(int index, Func<TSrc, TDst> convert)
{
Expand DownExpand Up@@ -396,7 +396,7 @@ private void CheckColumnInRange(int columnIndex)
}

/// <summary>
/// An in-memory data view based on the IList of data.
/// An in-memory data view based on the IList of data.
/// Supports shuffling.
/// </summary>
private sealed class ListDataView<TRow> : DataViewBase<TRow>
Expand DownExpand Up@@ -492,11 +492,11 @@ protected override bool MoveManyCore(long count)
}

/// <summary>
/// An in-memory data view based on the IEnumerable of data.
/// An in-memory data view based on the IEnumerable of data.
/// Doesn't support shuffling.
///
///
/// This class is public because prediction engine wants to call its <see cref="SetData"/>
/// for performance reasons.
/// for performance reasons.
/// </summary>
public sealed class StreamingDataView<TRow> : DataViewBase<TRow>
where TRow : class
Expand DownExpand Up@@ -578,7 +578,7 @@ protected override bool MoveNextCore()

/// <summary>
/// This represents the 'infinite data view' over one (mutable) user-defined object.
/// The 'current row' object can be updated at any time, this will affect all the
/// The 'current row' object can be updated at any time, this will affect all the
/// newly created cursors, but not the ones already existing.
/// </summary>
public sealed class SingleRowLoopDataView<TRow> : DataViewBase<TRow>
Expand DownExpand Up@@ -731,7 +731,7 @@ public abstract partial class MetadataInfo
/// </summary>
public ColumnType MetadataType;
/// <summary>
/// The string identifier of the metadata. Some identifiers have special meaning,
/// The string identifier of the metadata. Some identifiers have special meaning,
/// like "SlotNames", but any other identifiers can be used.
/// </summary>
public readonly string Kind;
Expand All@@ -757,7 +757,7 @@ public sealed class MetadataInfo<T> : MetadataInfo
/// <summary>
/// Constructor for metadata of value type T.
/// </summary>
/// <param name="kind">The string identifier of the metadata. Some identifiers have special meaning,
/// <param name="kind">The string identifier of the metadata. Some identifiers have special meaning,
/// like "SlotNames", but any other identifiers can be used.</param>
/// <param name="value">Metadata value.</param>
/// <param name="metadataType">Type of the metadata.</param>
Expand Down
4 changes: 2 additions & 2 deletions src/Microsoft.ML.Api/GenerateCodeCommand.cs
Original file line numberDiff line numberDiff line change
Expand Up@@ -21,7 +21,7 @@ namespace Microsoft.ML.Runtime.Api
{
/// <summary>
/// Generates the sample prediction code for a given model file, with correct input and output classes.
///
///
/// REVIEW: Consider adding support for generating VBuffers instead of arrays, maybe for high dimensionality vectors.
/// </summary>
public sealed class GenerateCodeCommand : ICommand
Expand All@@ -45,7 +45,7 @@ public sealed class Arguments
ShortName = "sparse", SortOrder = 102)]
public bool SparseVectorDeclaration;

// REVIEW: currently, it's only used in unit testing to not generate the paths into the test output folder.
// REVIEW: currently, it's only used in unit testing to not generate the paths into the test output folder.
// However, it might be handy for automation scenarios, so I've added this as a hidden option.
[Argument(ArgumentType.AtMostOnce, HelpText = "A location of the model file to put into generated file", Hide = true)]
public string ModelNameOverride;
Expand Down
14 changes: 7 additions & 7 deletions src/Microsoft.ML.Api/InternalSchemaDefinition.cs
Original file line numberDiff line numberDiff line change
Expand Up@@ -76,12 +76,12 @@ private Column(string columnName, ColumnType columnType, FieldInfo fieldInfo = n
}

/// <summary>
/// Function that checks whether the InternalSchemaDefinition.Column is a valid one.
/// Function that checks whether the InternalSchemaDefinition.Column is a valid one.
/// To be valid, the Column must:
/// 1. Have non-empty values for ColumnName and ColumnType
/// 2. Have a non-empty value for FieldInfo iff it is a field column, else
/// ReturnParameterInfo and Generator iff it is a computed column
/// 3. Generator must have the method inputs (TRow rowObject,
/// 3. Generator must have the method inputs (TRow rowObject,
/// long position, ref TValue outputValue) in that order.
/// </summary>
[Conditional("DEBUG")]
Expand DownExpand Up@@ -133,7 +133,7 @@ private InternalSchemaDefinition(Column[] columns)
/// <summary>
/// Given a field info on a type, returns whether this appears to be a vector type,
/// and also the associated data kind for this type. If a data kind could not
/// be determined, this will throw.
/// be determined, this will throw.
/// </summary>
/// <param name="fieldInfo">The field info to inspect.</param>
/// <param name="isVector">Whether this appears to be a vector type.</param>
Expand All@@ -149,7 +149,7 @@ public static void GetVectorAndKind(FieldInfo fieldInfo, out bool isVector, out
/// <summary>
/// Given a parameter info on a type, returns whether this appears to be a vector type,
/// and also the associated data kind for this type. If a data kind could not
/// be determined, this will throw.
/// be determined, this will throw.
/// </summary>
/// <param name="parameterInfo">The parameter info to inspect.</param>
/// <param name="isVector">Whether this appears to be a vector type.</param>
Expand All@@ -165,7 +165,7 @@ public static void GetVectorAndKind(ParameterInfo parameterInfo, out bool isVect
/// <summary>
/// Given a type and name for a variable, returns whether this appears to be a vector type,
/// and also the associated data kind for this type. If a data kind could not
/// be determined, this will throw.
/// be determined, this will throw.
/// </summary>
/// <param name="rawType">The type of the variable to inspect.</param>
/// <param name="name">The name of the variable to inspect.</param>
Expand DownExpand Up@@ -222,7 +222,7 @@ public static InternalSchemaDefinition Create(Type userType, SchemaDefinition us
col.MemberName,
userType.FullName);

//Clause to handle the field that may be used to expose the cursor channel.
//Clause to handle the field that may be used to expose the cursor channel.
//This field does not need a column.
if (fieldInfo.FieldType == typeof(IChannel))
continue;
Expand DownExpand Up@@ -251,7 +251,7 @@ public static InternalSchemaDefinition Create(Type userType, SchemaDefinition us
}
else
{
// Make sure that the types are compatible with the declared type, including
// Make sure that the types are compatible with the declared type, including
// whether it is a vector type.
if (isVector != col.ColumnType.IsVector)
{
Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 27 additions & 0 deletions Microsoft.ML.sln
Original file line numberDiff line numberDiff line change
Expand Up@@ -5,6 +5,9 @@ MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.ML.Core", "src\Microsoft.ML.Core\Microsoft.ML.Core.csproj", "{A6CA6CC6-5D7C-4D7F-A0F5-35E14B383B0A}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{09EADF06-BE25-4228-AB53-95AE3E15B530}"
ProjectSection(SolutionItems) = preProject
src\Source.ruleset = src\Source.ruleset
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{AED9C836-31E3-4F3F-8ABC-929555D3F3C4}"
EndProject
Expand DownExpand Up@@ -88,6 +91,12 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Microsoft.ML.CpuMath", "Mic
pkg\Microsoft.ML.CpuMath\Microsoft.ML.CpuMath.symbols.nupkgproj = pkg\Microsoft.ML.CpuMath\Microsoft.ML.CpuMath.symbols.nupkgproj
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tools-local", "tools-local", "{7F13E156-3EBA-4021-84A5-CD56BA72F99E}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.ML.CodeAnalyzer", "tools-local\Microsoft.ML.CodeAnalyzer\Microsoft.ML.CodeAnalyzer.csproj", "{B4E55B2D-2A92-46E7-B72F-E76D6FD83440}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.ML.CodeAnalyzer.Tests", "test\Microsoft.ML.CodeAnalyzer.Tests\Microsoft.ML.CodeAnalyzer.Tests.csproj", "{3E4ABF07-7970-4BE6-B45B-A13D3C397545}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Expand DownExpand Up@@ -304,6 +313,22 @@ Global
{DCF46B79-1FDB-4DBA-A263-D3D64E3AAA27}.Release|Any CPU.Build.0 = Release|Any CPU
{DCF46B79-1FDB-4DBA-A263-D3D64E3AAA27}.Release-Intrinsics|Any CPU.ActiveCfg = Release|Any CPU
{DCF46B79-1FDB-4DBA-A263-D3D64E3AAA27}.Release-Intrinsics|Any CPU.Build.0 = Release|Any CPU
{B4E55B2D-2A92-46E7-B72F-E76D6FD83440}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B4E55B2D-2A92-46E7-B72F-E76D6FD83440}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B4E55B2D-2A92-46E7-B72F-E76D6FD83440}.Debug-Intrinsics|Any CPU.ActiveCfg = Debug|Any CPU
{B4E55B2D-2A92-46E7-B72F-E76D6FD83440}.Debug-Intrinsics|Any CPU.Build.0 = Debug|Any CPU
{B4E55B2D-2A92-46E7-B72F-E76D6FD83440}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B4E55B2D-2A92-46E7-B72F-E76D6FD83440}.Release|Any CPU.Build.0 = Release|Any CPU
{B4E55B2D-2A92-46E7-B72F-E76D6FD83440}.Release-Intrinsics|Any CPU.ActiveCfg = Release|Any CPU
{B4E55B2D-2A92-46E7-B72F-E76D6FD83440}.Release-Intrinsics|Any CPU.Build.0 = Release|Any CPU
{3E4ABF07-7970-4BE6-B45B-A13D3C397545}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3E4ABF07-7970-4BE6-B45B-A13D3C397545}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3E4ABF07-7970-4BE6-B45B-A13D3C397545}.Debug-Intrinsics|Any CPU.ActiveCfg = Debug|Any CPU
{3E4ABF07-7970-4BE6-B45B-A13D3C397545}.Debug-Intrinsics|Any CPU.Build.0 = Debug|Any CPU
{3E4ABF07-7970-4BE6-B45B-A13D3C397545}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3E4ABF07-7970-4BE6-B45B-A13D3C397545}.Release|Any CPU.Build.0 = Release|Any CPU
{3E4ABF07-7970-4BE6-B45B-A13D3C397545}.Release-Intrinsics|Any CPU.ActiveCfg = Release|Any CPU
{3E4ABF07-7970-4BE6-B45B-A13D3C397545}.Release-Intrinsics|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
Expand DownExpand Up@@ -340,6 +365,8 @@ Global
{001F3B4E-FBE4-4001-AFD2-A6A989CD1C25} = {09EADF06-BE25-4228-AB53-95AE3E15B530}
{DCF46B79-1FDB-4DBA-A263-D3D64E3AAA27} = {09EADF06-BE25-4228-AB53-95AE3E15B530}
{BF66A305-DF10-47E4-8D81-42049B149D2B} = {D3D38B03-B557-484D-8348-8BADEE4DF592}
{B4E55B2D-2A92-46E7-B72F-E76D6FD83440} = {7F13E156-3EBA-4021-84A5-CD56BA72F99E}
{3E4ABF07-7970-4BE6-B45B-A13D3C397545} = {AED9C836-31E3-4F3F-8ABC-929555D3F3C4}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {41165AF1-35BB-4832-A189-73060F82B01D}
Expand Down
2 changes: 1 addition & 1 deletion build/Dependencies.props
Original file line numberDiff line numberDiff line change
Expand Up@@ -7,6 +7,6 @@
<SystemCodeDomPackageVersion>4.4.0</SystemCodeDomPackageVersion>
<SystemReflectionEmitLightweightPackageVersion>4.3.0</SystemReflectionEmitLightweightPackageVersion>
<PublishSymbolsPackageVersion>1.0.0-beta-62824-02</PublishSymbolsPackageVersion>
<LightGBMPackageVersion>2.1.2.2</LightGBMPackageVersion>
<LightGBMPackageVersion>2.1.2.2</LightGBMPackageVersion>
</PropertyGroup>
</Project>
13 changes: 12 additions & 1 deletion src/Directory.Build.props
Original file line numberDiff line numberDiff line change
Expand Up@@ -11,7 +11,18 @@
<NoWarn>$(NoWarn);1591</NoWarn>
<WarningsNotAsErrors>$(WarningsNotAsErrors);1591</WarningsNotAsErrors>


<CodeAnalysisRuleSet>$(MSBuildThisFileDirectory)\Source.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>

<ItemGroup>
<ProjectReference
Condition="'$(UseMLCodeAnalyzer)' != 'false' and '$(MSBuildProjectExtension)' == '.csproj'"
Include="$(MSBuildThisFileDirectory)\..\tools-local\Microsoft.ML.CodeAnalyzer\Microsoft.ML.CodeAnalyzer.csproj">
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
<OutputItemType>Analyzer</OutputItemType>
</ProjectReference>
<PackageReference Condition="'$(UseStyleCopAnalyzer)' != 'false' and '$(MSBuildProjectExtension)' == '.csproj'"
Include="StyleCop.Analyzers" Version="1.1.0-beta008" PrivateAssets="All" />
</ItemGroup>

</Project>
4 changes: 2 additions & 2 deletions src/Microsoft.ML.Api/ApiUtils.cs
Original file line numberDiff line numberDiff line change
Expand Up@@ -46,7 +46,7 @@ private static OpCode GetAssignmentOpCode(Type t)

/// <summary>
/// Each of the specialized 'peek' methods copies the appropriate field value of an instance of T
/// into the provided buffer. So, the call is 'peek(userObject, ref destination)' and the logic is
/// into the provided buffer. So, the call is 'peek(userObject, ref destination)' and the logic is
/// indentical to 'destination = userObject.##FIELD##', where ##FIELD## is defined per peek method.
/// </summary>
internal static Delegate GeneratePeek<TOwn, TRow>(InternalSchemaDefinition.Column column)
Expand DownExpand Up@@ -83,7 +83,7 @@ private static Delegate GeneratePeek<TOwn, TRow, TValue>(FieldInfo fieldInfo, Op

/// <summary>
/// Each of the specialized 'poke' methods sets the appropriate field value of an instance of T
/// to the provided value. So, the call is 'peek(userObject, providedValue)' and the logic is
/// to the provided value. So, the call is 'peek(userObject, providedValue)' and the logic is
/// indentical to 'userObject.##FIELD## = providedValue', where ##FIELD## is defined per poke method.
/// </summary>
internal static Delegate GeneratePoke<TOwn, TRow>(InternalSchemaDefinition.Column column)
Expand Down
10 changes: 5 additions & 5 deletions src/Microsoft.ML.Api/CodeGenerationUtils.cs
Original file line numberDiff line numberDiff line change
Expand Up@@ -97,12 +97,12 @@ public static string GetCSharpString(CSharpCodeProvider codeProvider, string val
}

/// <summary>
/// Gets the C# strings representing the type name for a variable corresponding to
/// the <see cref="IDataView"/> column type.
///
/// If the type is a vector, then <paramref name="useVBuffer"/> controls whether the array field is
/// Gets the C# strings representing the type name for a variable corresponding to
/// the <see cref="IDataView"/> column type.
///
/// If the type is a vector, then <paramref name="useVBuffer"/> controls whether the array field is
/// generated or <see cref="VBuffer{T}"/>.
///
///
/// If additional attributes are required, they are appended to the <paramref name="attributes"/> list.
/// </summary>
private static string GetBackingTypeName(ColumnType colType, bool useVBuffer, List<string> attributes)
Expand Down
18 changes: 9 additions & 9 deletions src/Microsoft.ML.Api/ComponentCreation.cs
Original file line numberDiff line numberDiff line change
Expand Up@@ -11,14 +11,14 @@
namespace Microsoft.ML.Runtime.Api
{
/// <summary>
/// This class defines extension methods for an <see cref="IHostEnvironment"/> to facilitate creating
/// This class defines extension methods for an <see cref="IHostEnvironment"/> to facilitate creating
/// components (loaders, transforms, trainers, scorers, evaluators, savers).
/// </summary>
public static class ComponentCreation
{
/// <summary>
/// Create a new data view which is obtained by appending all columns of all the source data views.
/// If the data views are of different length, the resulting data view will have the length equal to the
/// If the data views are of different length, the resulting data view will have the length equal to the
/// length of the shortest source.
/// </summary>
/// <param name="env">The host environment to use.</param>
Expand DownExpand Up@@ -59,11 +59,11 @@ public static RoleMappedData CreateExamples(this IHostEnvironment env, IDataView
/// Create a new <see cref="IDataView"/> over an in-memory collection of the items of user-defined type.
/// The user maintains ownership of the <paramref name="data"/> and the resulting data view will
/// never alter the contents of the <paramref name="data"/>.
/// Since <see cref="IDataView"/> is assumed to be immutable, the user is expected to not
/// Since <see cref="IDataView"/> is assumed to be immutable, the user is expected to not
/// modify the contents of <paramref name="data"/> while the data view is being actively cursored.
///
///
/// One typical usage for in-memory data view could be: create the data view, train a predictor.
/// Once the predictor is fully trained, modify the contents of the underlying collection and
/// Once the predictor is fully trained, modify the contents of the underlying collection and
/// train another predictor.
/// </summary>
/// <typeparam name="TRow">The user-defined item type.</typeparam>
Expand All@@ -88,9 +88,9 @@ public static IDataView CreateDataView<TRow>(this IHostEnvironment env, IList<TR
/// Since <see cref="IDataView"/> is assumed to be immutable, the user is expected to support
/// multiple enumeration of the <paramref name="data"/> that would return the same results, unless
/// the user knows that the data will only be cursored once.
///
///
/// One typical usage for streaming data view could be: create the data view that lazily loads data
/// as needed, then apply pre-trained transformations to it and cursor through it for transformation
/// as needed, then apply pre-trained transformations to it and cursor through it for transformation
/// results. This is how <see cref="BatchPredictionEngine{TSrc,TDst}"/> is implemented.
/// </summary>
/// <typeparam name="TRow">The user-defined item type.</typeparam>
Expand DownExpand Up@@ -191,7 +191,7 @@ public static PredictionEngine<TSrc, TDst> CreatePredictionEngine<TSrc, TDst>(th
/// <summary>
/// Create a prediction engine.
/// This encapsulates the 'classic' prediction problem, where the input is denoted by the float array of features,
/// and the output is a float score. For binary classification predictors that can output probability, there are output
/// and the output is a float score. For binary classification predictors that can output probability, there are output
/// fields that report the predicted label and probability.
/// </summary>
/// <param name="env">The host environment to use.</param>
Expand All@@ -207,7 +207,7 @@ public static SimplePredictionEngine CreateSimplePredictionEngine(this IHostEnvi

/// <summary>
/// Load the transforms (but not loader) from the model steram and apply them to the specified data.
/// It is acceptable to have no transforms in the model stream: in this case the original
/// It is acceptable to have no transforms in the model stream: in this case the original
/// <paramref name="data"/> will be returned.
/// </summary>
/// <param name="env">The host environment to use.</param>
Expand Down
16 changes: 8 additions & 8 deletions src/Microsoft.ML.Api/DataViewConstructionUtils.cs
Original file line numberDiff line numberDiff line change
Expand Up@@ -285,7 +285,7 @@ private Delegate CreateGetter(int index)
}

// REVIEW: The converting getter invokes a type conversion delegate on every call, so it's inherently slower
// than the 'direct' getter. We don't have good indication of this to the user, and the selection
// than the 'direct' getter. We don't have good indication of this to the user, and the selection
// of affected types is pretty arbitrary (signed integers and bools, but not uints and floats).
private Delegate CreateConvertingArrayGetterDelegate<TSrc, TDst>(int index, Func<TSrc, TDst> convert)
{
Expand DownExpand Up@@ -396,7 +396,7 @@ private void CheckColumnInRange(int columnIndex)
}

/// <summary>
/// An in-memory data view based on the IList of data.
/// An in-memory data view based on the IList of data.
/// Supports shuffling.
/// </summary>
private sealed class ListDataView<TRow> : DataViewBase<TRow>
Expand DownExpand Up@@ -492,11 +492,11 @@ protected override bool MoveManyCore(long count)
}

/// <summary>
/// An in-memory data view based on the IEnumerable of data.
/// An in-memory data view based on the IEnumerable of data.
/// Doesn't support shuffling.
///
///
/// This class is public because prediction engine wants to call its <see cref="SetData"/>
/// for performance reasons.
/// for performance reasons.
/// </summary>
public sealed class StreamingDataView<TRow> : DataViewBase<TRow>
where TRow : class
Expand DownExpand Up@@ -578,7 +578,7 @@ protected override bool MoveNextCore()

/// <summary>
/// This represents the 'infinite data view' over one (mutable) user-defined object.
/// The 'current row' object can be updated at any time, this will affect all the
/// The 'current row' object can be updated at any time, this will affect all the
/// newly created cursors, but not the ones already existing.
/// </summary>
public sealed class SingleRowLoopDataView<TRow> : DataViewBase<TRow>
Expand DownExpand Up@@ -731,7 +731,7 @@ public abstract partial class MetadataInfo
/// </summary>
public ColumnType MetadataType;
/// <summary>
/// The string identifier of the metadata. Some identifiers have special meaning,
/// The string identifier of the metadata. Some identifiers have special meaning,
/// like "SlotNames", but any other identifiers can be used.
/// </summary>
public readonly string Kind;
Expand All@@ -757,7 +757,7 @@ public sealed class MetadataInfo<T> : MetadataInfo
/// <summary>
/// Constructor for metadata of value type T.
/// </summary>
/// <param name="kind">The string identifier of the metadata. Some identifiers have special meaning,
/// <param name="kind">The string identifier of the metadata. Some identifiers have special meaning,
/// like "SlotNames", but any other identifiers can be used.</param>
/// <param name="value">Metadata value.</param>
/// <param name="metadataType">Type of the metadata.</param>
Expand Down
4 changes: 2 additions & 2 deletions src/Microsoft.ML.Api/GenerateCodeCommand.cs
Original file line numberDiff line numberDiff line change
Expand Up@@ -21,7 +21,7 @@ namespace Microsoft.ML.Runtime.Api
{
/// <summary>
/// Generates the sample prediction code for a given model file, with correct input and output classes.
///
///
/// REVIEW: Consider adding support for generating VBuffers instead of arrays, maybe for high dimensionality vectors.
/// </summary>
public sealed class GenerateCodeCommand : ICommand
Expand All@@ -45,7 +45,7 @@ public sealed class Arguments
ShortName = "sparse", SortOrder = 102)]
public bool SparseVectorDeclaration;

// REVIEW: currently, it's only used in unit testing to not generate the paths into the test output folder.
// REVIEW: currently, it's only used in unit testing to not generate the paths into the test output folder.
// However, it might be handy for automation scenarios, so I've added this as a hidden option.
[Argument(ArgumentType.AtMostOnce, HelpText = "A location of the model file to put into generated file", Hide = true)]
public string ModelNameOverride;
Expand Down
14 changes: 7 additions & 7 deletions src/Microsoft.ML.Api/InternalSchemaDefinition.cs
Original file line numberDiff line numberDiff line change
Expand Up@@ -76,12 +76,12 @@ private Column(string columnName, ColumnType columnType, FieldInfo fieldInfo = n
}

/// <summary>
/// Function that checks whether the InternalSchemaDefinition.Column is a valid one.
/// Function that checks whether the InternalSchemaDefinition.Column is a valid one.
/// To be valid, the Column must:
/// 1. Have non-empty values for ColumnName and ColumnType
/// 2. Have a non-empty value for FieldInfo iff it is a field column, else
/// ReturnParameterInfo and Generator iff it is a computed column
/// 3. Generator must have the method inputs (TRow rowObject,
/// 3. Generator must have the method inputs (TRow rowObject,
/// long position, ref TValue outputValue) in that order.
/// </summary>
[Conditional("DEBUG")]
Expand DownExpand Up@@ -133,7 +133,7 @@ private InternalSchemaDefinition(Column[] columns)
/// <summary>
/// Given a field info on a type, returns whether this appears to be a vector type,
/// and also the associated data kind for this type. If a data kind could not
/// be determined, this will throw.
/// be determined, this will throw.
/// </summary>
/// <param name="fieldInfo">The field info to inspect.</param>
/// <param name="isVector">Whether this appears to be a vector type.</param>
Expand All@@ -149,7 +149,7 @@ public static void GetVectorAndKind(FieldInfo fieldInfo, out bool isVector, out
/// <summary>
/// Given a parameter info on a type, returns whether this appears to be a vector type,
/// and also the associated data kind for this type. If a data kind could not
/// be determined, this will throw.
/// be determined, this will throw.
/// </summary>
/// <param name="parameterInfo">The parameter info to inspect.</param>
/// <param name="isVector">Whether this appears to be a vector type.</param>
Expand All@@ -165,7 +165,7 @@ public static void GetVectorAndKind(ParameterInfo parameterInfo, out bool isVect
/// <summary>
/// Given a type and name for a variable, returns whether this appears to be a vector type,
/// and also the associated data kind for this type. If a data kind could not
/// be determined, this will throw.
/// be determined, this will throw.
/// </summary>
/// <param name="rawType">The type of the variable to inspect.</param>
/// <param name="name">The name of the variable to inspect.</param>
Expand DownExpand Up@@ -222,7 +222,7 @@ public static InternalSchemaDefinition Create(Type userType, SchemaDefinition us
col.MemberName,
userType.FullName);

//Clause to handle the field that may be used to expose the cursor channel.
//Clause to handle the field that may be used to expose the cursor channel.
//This field does not need a column.
if (fieldInfo.FieldType == typeof(IChannel))
continue;
Expand DownExpand Up@@ -251,7 +251,7 @@ public static InternalSchemaDefinition Create(Type userType, SchemaDefinition us
}
else
{
// Make sure that the types are compatible with the declared type, including
// Make sure that the types are compatible with the declared type, including
// whether it is a vector type.
if (isVector != col.ColumnType.IsVector)
{
Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 27 additions & 0 deletions Microsoft.ML.sln
Original file line numberDiff line numberDiff line change
Expand Up@@ -5,6 +5,9 @@ MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.ML.Core", "src\Microsoft.ML.Core\Microsoft.ML.Core.csproj", "{A6CA6CC6-5D7C-4D7F-A0F5-35E14B383B0A}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{09EADF06-BE25-4228-AB53-95AE3E15B530}"
ProjectSection(SolutionItems) = preProject
src\Source.ruleset = src\Source.ruleset
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{AED9C836-31E3-4F3F-8ABC-929555D3F3C4}"
EndProject
Expand DownExpand Up@@ -88,6 +91,12 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Microsoft.ML.CpuMath", "Mic
pkg\Microsoft.ML.CpuMath\Microsoft.ML.CpuMath.symbols.nupkgproj = pkg\Microsoft.ML.CpuMath\Microsoft.ML.CpuMath.symbols.nupkgproj
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tools-local", "tools-local", "{7F13E156-3EBA-4021-84A5-CD56BA72F99E}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.ML.CodeAnalyzer", "tools-local\Microsoft.ML.CodeAnalyzer\Microsoft.ML.CodeAnalyzer.csproj", "{B4E55B2D-2A92-46E7-B72F-E76D6FD83440}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.ML.CodeAnalyzer.Tests", "test\Microsoft.ML.CodeAnalyzer.Tests\Microsoft.ML.CodeAnalyzer.Tests.csproj", "{3E4ABF07-7970-4BE6-B45B-A13D3C397545}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Expand DownExpand Up@@ -304,6 +313,22 @@ Global
{DCF46B79-1FDB-4DBA-A263-D3D64E3AAA27}.Release|Any CPU.Build.0 = Release|Any CPU
{DCF46B79-1FDB-4DBA-A263-D3D64E3AAA27}.Release-Intrinsics|Any CPU.ActiveCfg = Release|Any CPU
{DCF46B79-1FDB-4DBA-A263-D3D64E3AAA27}.Release-Intrinsics|Any CPU.Build.0 = Release|Any CPU
{B4E55B2D-2A92-46E7-B72F-E76D6FD83440}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B4E55B2D-2A92-46E7-B72F-E76D6FD83440}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B4E55B2D-2A92-46E7-B72F-E76D6FD83440}.Debug-Intrinsics|Any CPU.ActiveCfg = Debug|Any CPU
{B4E55B2D-2A92-46E7-B72F-E76D6FD83440}.Debug-Intrinsics|Any CPU.Build.0 = Debug|Any CPU
{B4E55B2D-2A92-46E7-B72F-E76D6FD83440}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B4E55B2D-2A92-46E7-B72F-E76D6FD83440}.Release|Any CPU.Build.0 = Release|Any CPU
{B4E55B2D-2A92-46E7-B72F-E76D6FD83440}.Release-Intrinsics|Any CPU.ActiveCfg = Release|Any CPU
{B4E55B2D-2A92-46E7-B72F-E76D6FD83440}.Release-Intrinsics|Any CPU.Build.0 = Release|Any CPU
{3E4ABF07-7970-4BE6-B45B-A13D3C397545}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3E4ABF07-7970-4BE6-B45B-A13D3C397545}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3E4ABF07-7970-4BE6-B45B-A13D3C397545}.Debug-Intrinsics|Any CPU.ActiveCfg = Debug|Any CPU
{3E4ABF07-7970-4BE6-B45B-A13D3C397545}.Debug-Intrinsics|Any CPU.Build.0 = Debug|Any CPU
{3E4ABF07-7970-4BE6-B45B-A13D3C397545}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3E4ABF07-7970-4BE6-B45B-A13D3C397545}.Release|Any CPU.Build.0 = Release|Any CPU
{3E4ABF07-7970-4BE6-B45B-A13D3C397545}.Release-Intrinsics|Any CPU.ActiveCfg = Release|Any CPU
{3E4ABF07-7970-4BE6-B45B-A13D3C397545}.Release-Intrinsics|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
Expand DownExpand Up@@ -340,6 +365,8 @@ Global
{001F3B4E-FBE4-4001-AFD2-A6A989CD1C25} = {09EADF06-BE25-4228-AB53-95AE3E15B530}
{DCF46B79-1FDB-4DBA-A263-D3D64E3AAA27} = {09EADF06-BE25-4228-AB53-95AE3E15B530}
{BF66A305-DF10-47E4-8D81-42049B149D2B} = {D3D38B03-B557-484D-8348-8BADEE4DF592}
{B4E55B2D-2A92-46E7-B72F-E76D6FD83440} = {7F13E156-3EBA-4021-84A5-CD56BA72F99E}
{3E4ABF07-7970-4BE6-B45B-A13D3C397545} = {AED9C836-31E3-4F3F-8ABC-929555D3F3C4}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {41165AF1-35BB-4832-A189-73060F82B01D}
Expand Down
2 changes: 1 addition & 1 deletion build/Dependencies.props
Original file line numberDiff line numberDiff line change
Expand Up@@ -7,6 +7,6 @@
<SystemCodeDomPackageVersion>4.4.0</SystemCodeDomPackageVersion>
<SystemReflectionEmitLightweightPackageVersion>4.3.0</SystemReflectionEmitLightweightPackageVersion>
<PublishSymbolsPackageVersion>1.0.0-beta-62824-02</PublishSymbolsPackageVersion>
<LightGBMPackageVersion>2.1.2.2</LightGBMPackageVersion>
<LightGBMPackageVersion>2.1.2.2</LightGBMPackageVersion>
</PropertyGroup>
</Project>
13 changes: 12 additions & 1 deletion src/Directory.Build.props
Original file line numberDiff line numberDiff line change
Expand Up@@ -11,7 +11,18 @@
<NoWarn>$(NoWarn);1591</NoWarn>
<WarningsNotAsErrors>$(WarningsNotAsErrors);1591</WarningsNotAsErrors>


<CodeAnalysisRuleSet>$(MSBuildThisFileDirectory)\Source.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>

<ItemGroup>
<ProjectReference
Condition="'$(UseMLCodeAnalyzer)' != 'false' and '$(MSBuildProjectExtension)' == '.csproj'"
Include="$(MSBuildThisFileDirectory)\..\tools-local\Microsoft.ML.CodeAnalyzer\Microsoft.ML.CodeAnalyzer.csproj">
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
<OutputItemType>Analyzer</OutputItemType>
</ProjectReference>
<PackageReference Condition="'$(UseStyleCopAnalyzer)' != 'false' and '$(MSBuildProjectExtension)' == '.csproj'"
Include="StyleCop.Analyzers" Version="1.1.0-beta008" PrivateAssets="All" />
</ItemGroup>

</Project>
4 changes: 2 additions & 2 deletions src/Microsoft.ML.Api/ApiUtils.cs
Original file line numberDiff line numberDiff line change
Expand Up@@ -46,7 +46,7 @@ private static OpCode GetAssignmentOpCode(Type t)

/// <summary>
/// Each of the specialized 'peek' methods copies the appropriate field value of an instance of T
/// into the provided buffer. So, the call is 'peek(userObject, ref destination)' and the logic is
/// into the provided buffer. So, the call is 'peek(userObject, ref destination)' and the logic is
/// indentical to 'destination = userObject.##FIELD##', where ##FIELD## is defined per peek method.
/// </summary>
internal static Delegate GeneratePeek<TOwn, TRow>(InternalSchemaDefinition.Column column)
Expand DownExpand Up@@ -83,7 +83,7 @@ private static Delegate GeneratePeek<TOwn, TRow, TValue>(FieldInfo fieldInfo, Op

/// <summary>
/// Each of the specialized 'poke' methods sets the appropriate field value of an instance of T
/// to the provided value. So, the call is 'peek(userObject, providedValue)' and the logic is
/// to the provided value. So, the call is 'peek(userObject, providedValue)' and the logic is
/// indentical to 'userObject.##FIELD## = providedValue', where ##FIELD## is defined per poke method.
/// </summary>
internal static Delegate GeneratePoke<TOwn, TRow>(InternalSchemaDefinition.Column column)
Expand Down
10 changes: 5 additions & 5 deletions src/Microsoft.ML.Api/CodeGenerationUtils.cs
Original file line numberDiff line numberDiff line change
Expand Up@@ -97,12 +97,12 @@ public static string GetCSharpString(CSharpCodeProvider codeProvider, string val
}

/// <summary>
/// Gets the C# strings representing the type name for a variable corresponding to
/// the <see cref="IDataView"/> column type.
///
/// If the type is a vector, then <paramref name="useVBuffer"/> controls whether the array field is
/// Gets the C# strings representing the type name for a variable corresponding to
/// the <see cref="IDataView"/> column type.
///
/// If the type is a vector, then <paramref name="useVBuffer"/> controls whether the array field is
/// generated or <see cref="VBuffer{T}"/>.
///
///
/// If additional attributes are required, they are appended to the <paramref name="attributes"/> list.
/// </summary>
private static string GetBackingTypeName(ColumnType colType, bool useVBuffer, List<string> attributes)
Expand Down
18 changes: 9 additions & 9 deletions src/Microsoft.ML.Api/ComponentCreation.cs
Original file line numberDiff line numberDiff line change
Expand Up@@ -11,14 +11,14 @@
namespace Microsoft.ML.Runtime.Api
{
/// <summary>
/// This class defines extension methods for an <see cref="IHostEnvironment"/> to facilitate creating
/// This class defines extension methods for an <see cref="IHostEnvironment"/> to facilitate creating
/// components (loaders, transforms, trainers, scorers, evaluators, savers).
/// </summary>
public static class ComponentCreation
{
/// <summary>
/// Create a new data view which is obtained by appending all columns of all the source data views.
/// If the data views are of different length, the resulting data view will have the length equal to the
/// If the data views are of different length, the resulting data view will have the length equal to the
/// length of the shortest source.
/// </summary>
/// <param name="env">The host environment to use.</param>
Expand DownExpand Up@@ -59,11 +59,11 @@ public static RoleMappedData CreateExamples(this IHostEnvironment env, IDataView
/// Create a new <see cref="IDataView"/> over an in-memory collection of the items of user-defined type.
/// The user maintains ownership of the <paramref name="data"/> and the resulting data view will
/// never alter the contents of the <paramref name="data"/>.
/// Since <see cref="IDataView"/> is assumed to be immutable, the user is expected to not
/// Since <see cref="IDataView"/> is assumed to be immutable, the user is expected to not
/// modify the contents of <paramref name="data"/> while the data view is being actively cursored.
///
///
/// One typical usage for in-memory data view could be: create the data view, train a predictor.
/// Once the predictor is fully trained, modify the contents of the underlying collection and
/// Once the predictor is fully trained, modify the contents of the underlying collection and
/// train another predictor.
/// </summary>
/// <typeparam name="TRow">The user-defined item type.</typeparam>
Expand All@@ -88,9 +88,9 @@ public static IDataView CreateDataView<TRow>(this IHostEnvironment env, IList<TR
/// Since <see cref="IDataView"/> is assumed to be immutable, the user is expected to support
/// multiple enumeration of the <paramref name="data"/> that would return the same results, unless
/// the user knows that the data will only be cursored once.
///
///
/// One typical usage for streaming data view could be: create the data view that lazily loads data
/// as needed, then apply pre-trained transformations to it and cursor through it for transformation
/// as needed, then apply pre-trained transformations to it and cursor through it for transformation
/// results. This is how <see cref="BatchPredictionEngine{TSrc,TDst}"/> is implemented.
/// </summary>
/// <typeparam name="TRow">The user-defined item type.</typeparam>
Expand DownExpand Up@@ -191,7 +191,7 @@ public static PredictionEngine<TSrc, TDst> CreatePredictionEngine<TSrc, TDst>(th
/// <summary>
/// Create a prediction engine.
/// This encapsulates the 'classic' prediction problem, where the input is denoted by the float array of features,
/// and the output is a float score. For binary classification predictors that can output probability, there are output
/// and the output is a float score. For binary classification predictors that can output probability, there are output
/// fields that report the predicted label and probability.
/// </summary>
/// <param name="env">The host environment to use.</param>
Expand All@@ -207,7 +207,7 @@ public static SimplePredictionEngine CreateSimplePredictionEngine(this IHostEnvi

/// <summary>
/// Load the transforms (but not loader) from the model steram and apply them to the specified data.
/// It is acceptable to have no transforms in the model stream: in this case the original
/// It is acceptable to have no transforms in the model stream: in this case the original
/// <paramref name="data"/> will be returned.
/// </summary>
/// <param name="env">The host environment to use.</param>
Expand Down
16 changes: 8 additions & 8 deletions src/Microsoft.ML.Api/DataViewConstructionUtils.cs
Original file line numberDiff line numberDiff line change
Expand Up@@ -285,7 +285,7 @@ private Delegate CreateGetter(int index)
}

// REVIEW: The converting getter invokes a type conversion delegate on every call, so it's inherently slower
// than the 'direct' getter. We don't have good indication of this to the user, and the selection
// than the 'direct' getter. We don't have good indication of this to the user, and the selection
// of affected types is pretty arbitrary (signed integers and bools, but not uints and floats).
private Delegate CreateConvertingArrayGetterDelegate<TSrc, TDst>(int index, Func<TSrc, TDst> convert)
{
Expand DownExpand Up@@ -396,7 +396,7 @@ private void CheckColumnInRange(int columnIndex)
}

/// <summary>
/// An in-memory data view based on the IList of data.
/// An in-memory data view based on the IList of data.
/// Supports shuffling.
/// </summary>
private sealed class ListDataView<TRow> : DataViewBase<TRow>
Expand DownExpand Up@@ -492,11 +492,11 @@ protected override bool MoveManyCore(long count)
}

/// <summary>
/// An in-memory data view based on the IEnumerable of data.
/// An in-memory data view based on the IEnumerable of data.
/// Doesn't support shuffling.
///
///
/// This class is public because prediction engine wants to call its <see cref="SetData"/>
/// for performance reasons.
/// for performance reasons.
/// </summary>
public sealed class StreamingDataView<TRow> : DataViewBase<TRow>
where TRow : class
Expand DownExpand Up@@ -578,7 +578,7 @@ protected override bool MoveNextCore()

/// <summary>
/// This represents the 'infinite data view' over one (mutable) user-defined object.
/// The 'current row' object can be updated at any time, this will affect all the
/// The 'current row' object can be updated at any time, this will affect all the
/// newly created cursors, but not the ones already existing.
/// </summary>
public sealed class SingleRowLoopDataView<TRow> : DataViewBase<TRow>
Expand DownExpand Up@@ -731,7 +731,7 @@ public abstract partial class MetadataInfo
/// </summary>
public ColumnType MetadataType;
/// <summary>
/// The string identifier of the metadata. Some identifiers have special meaning,
/// The string identifier of the metadata. Some identifiers have special meaning,
/// like "SlotNames", but any other identifiers can be used.
/// </summary>
public readonly string Kind;
Expand All@@ -757,7 +757,7 @@ public sealed class MetadataInfo<T> : MetadataInfo
/// <summary>
/// Constructor for metadata of value type T.
/// </summary>
/// <param name="kind">The string identifier of the metadata. Some identifiers have special meaning,
/// <param name="kind">The string identifier of the metadata. Some identifiers have special meaning,
/// like "SlotNames", but any other identifiers can be used.</param>
/// <param name="value">Metadata value.</param>
/// <param name="metadataType">Type of the metadata.</param>
Expand Down
4 changes: 2 additions & 2 deletions src/Microsoft.ML.Api/GenerateCodeCommand.cs
Original file line numberDiff line numberDiff line change
Expand Up@@ -21,7 +21,7 @@ namespace Microsoft.ML.Runtime.Api
{
/// <summary>
/// Generates the sample prediction code for a given model file, with correct input and output classes.
///
///
/// REVIEW: Consider adding support for generating VBuffers instead of arrays, maybe for high dimensionality vectors.
/// </summary>
public sealed class GenerateCodeCommand : ICommand
Expand All@@ -45,7 +45,7 @@ public sealed class Arguments
ShortName = "sparse", SortOrder = 102)]
public bool SparseVectorDeclaration;

// REVIEW: currently, it's only used in unit testing to not generate the paths into the test output folder.
// REVIEW: currently, it's only used in unit testing to not generate the paths into the test output folder.
// However, it might be handy for automation scenarios, so I've added this as a hidden option.
[Argument(ArgumentType.AtMostOnce, HelpText = "A location of the model file to put into generated file", Hide = true)]
public string ModelNameOverride;
Expand Down
14 changes: 7 additions & 7 deletions src/Microsoft.ML.Api/InternalSchemaDefinition.cs
Original file line numberDiff line numberDiff line change
Expand Up@@ -76,12 +76,12 @@ private Column(string columnName, ColumnType columnType, FieldInfo fieldInfo = n
}

/// <summary>
/// Function that checks whether the InternalSchemaDefinition.Column is a valid one.
/// Function that checks whether the InternalSchemaDefinition.Column is a valid one.
/// To be valid, the Column must:
/// 1. Have non-empty values for ColumnName and ColumnType
/// 2. Have a non-empty value for FieldInfo iff it is a field column, else
/// ReturnParameterInfo and Generator iff it is a computed column
/// 3. Generator must have the method inputs (TRow rowObject,
/// 3. Generator must have the method inputs (TRow rowObject,
/// long position, ref TValue outputValue) in that order.
/// </summary>
[Conditional("DEBUG")]
Expand DownExpand Up@@ -133,7 +133,7 @@ private InternalSchemaDefinition(Column[] columns)
/// <summary>
/// Given a field info on a type, returns whether this appears to be a vector type,
/// and also the associated data kind for this type. If a data kind could not
/// be determined, this will throw.
/// be determined, this will throw.
/// </summary>
/// <param name="fieldInfo">The field info to inspect.</param>
/// <param name="isVector">Whether this appears to be a vector type.</param>
Expand All@@ -149,7 +149,7 @@ public static void GetVectorAndKind(FieldInfo fieldInfo, out bool isVector, out
/// <summary>
/// Given a parameter info on a type, returns whether this appears to be a vector type,
/// and also the associated data kind for this type. If a data kind could not
/// be determined, this will throw.
/// be determined, this will throw.
/// </summary>
/// <param name="parameterInfo">The parameter info to inspect.</param>
/// <param name="isVector">Whether this appears to be a vector type.</param>
Expand All@@ -165,7 +165,7 @@ public static void GetVectorAndKind(ParameterInfo parameterInfo, out bool isVect
/// <summary>
/// Given a type and name for a variable, returns whether this appears to be a vector type,
/// and also the associated data kind for this type. If a data kind could not
/// be determined, this will throw.
/// be determined, this will throw.
/// </summary>
/// <param name="rawType">The type of the variable to inspect.</param>
/// <param name="name">The name of the variable to inspect.</param>
Expand DownExpand Up@@ -222,7 +222,7 @@ public static InternalSchemaDefinition Create(Type userType, SchemaDefinition us
col.MemberName,
userType.FullName);

//Clause to handle the field that may be used to expose the cursor channel.
//Clause to handle the field that may be used to expose the cursor channel.
//This field does not need a column.
if (fieldInfo.FieldType == typeof(IChannel))
continue;
Expand DownExpand Up@@ -251,7 +251,7 @@ public static InternalSchemaDefinition Create(Type userType, SchemaDefinition us
}
else
{
// Make sure that the types are compatible with the declared type, including
// Make sure that the types are compatible with the declared type, including
// whether it is a vector type.
if (isVector != col.ColumnType.IsVector)
{
Expand Down
Loading