gpt4 book ai didi

.net - 如何将介绍的 ML.Net 演示翻译成 F#?

转载 作者:行者123 更新时间:2023-12-03 17:53:15 25 4
gpt4 key购买 nike

我在这里查看cs文件:
https://www.microsoft.com/net/learn/apps/machine-learning-and-ai/ml-dotnet/get-started/windows
在我尝试将其转换为 F# 时,它编译得很好,但会抛出 System.Reflection.TargetInvocationException运行时:FormatException: One of the identified items was in an invalid format .我错过了什么?

已编辑:之前使用过记录

open Microsoft.ML
open Microsoft.ML.Runtime.Api
open Microsoft.ML.Trainers
open Microsoft.ML.Transforms
open System

type IrisData =
[<Column("0")>] val mutable SepalLength : float
[<Column("1")>] val mutable SepalWidth : float
[<Column("2")>] val mutable PetalLength : float
[<Column("3")>] val mutable PetalWidth : float
[<Column("4");ColumnName("Label")>] val mutable Label : string

new(sepLen, sepWid, petLen, petWid, label) =
{ SepalLength = sepLen
SepalWidth = sepWid
PetalLength = petLen
PetalWidth = petWid
Label = label }

type IrisPrediction =
[<ColumnName("PredictedLabel")>] val mutable PredictedLabels : string
new() = { PredictedLabels = "Iris-setosa" }


[<EntryPoint>]
let main argv =
let pipeline = new LearningPipeline()
let dataPath = "iris.data.txt"
pipeline.Add(new TextLoader<IrisData>(dataPath,separator = ","))
pipeline.Add(new Dictionarizer("Label"))
pipeline.Add(new ColumnConcatenator("Features", "SepalLength", "SepalWidth", "PetalLength", "PetalWidth"))
pipeline.Add(new StochasticDualCoordinateAscentClassifier())
pipeline.Add(new PredictedLabelColumnOriginalValueConverter(PredictedLabelColumn = "PredictedLabel") )
let model = pipeline.Train<IrisData, IrisPrediction>()


let prediction = model.Predict(IrisData(3.3, 1.6, 0.2, 5.1,""))

Console.WriteLine("Predicted flower type is: {prediction.PredictedLabels}")

0 // return an integer exit code

最佳答案

您可以在下面找到 ML tutorial 的工作 F# 版本的代码。 ,使用 Microsoft.ML 0.1.0(可能会因较新版本而中断)。 IrisData 与使示例工作的代码有两个主要区别。和 IrisPrediction类型定义:

  • 在 F# 中准确表示 C# POCO,具有无参数构造函数和对字段的公共(public)访问权限
  • 正确移植 C# float到 F#,即 float32

  • 这是代码
    open Microsoft.ML
    open Microsoft.ML.Runtime.Api
    open Microsoft.ML.Trainers
    open Microsoft.ML.Transforms
    open System

    type IrisData() =
    [<Column("0")>]
    [<DefaultValue>]
    val mutable public SepalLength: float32
    [<DefaultValue>]
    [<Column("1")>]
    val mutable public SepalWidth: float32
    [<DefaultValue>]
    [<Column("2")>]
    val mutable public PetalLength:float32
    [<DefaultValue>]
    [<Column("3")>]
    val mutable public PetalWidth:float32
    [<DefaultValue>]
    [<Column("4")>]
    [<ColumnName("Label")>]
    val mutable public Label:string

    type IrisPrediction() =
    [<ColumnName("PredictedLabel")>]
    [<DefaultValue>]
    val mutable public PredictedLabel : string

    [<EntryPoint>]
    let main argv =
    let pipeline = new LearningPipeline()
    let dataPath = "iris.data.txt"
    let a = IrisPrediction()
    pipeline.Add(new TextLoader<IrisData>(dataPath,separator = ","))
    pipeline.Add(new Dictionarizer("Label"))
    pipeline.Add(new ColumnConcatenator("Features", "SepalLength", "SepalWidth", "PetalLength", "PetalWidth"))
    pipeline.Add(new StochasticDualCoordinateAscentClassifier())
    pipeline.Add(new PredictedLabelColumnOriginalValueConverter(PredictedLabelColumn = "PredictedLabel") )
    let model = pipeline.Train<IrisData, IrisPrediction>()

    let x = IrisData()
    x.SepalLength <- 3.3f
    x.SepalWidth <- 1.6f
    x.PetalLength <- 0.2f
    x.PetalWidth <- 5.1f
    let prediction = model.Predict(x)

    printfn "Predicted flower type is: %s" prediction.PredictedLabel

    0

    以及它产生的输出:
    Automatically adding a MinMax normalization transform, use 'norm=Warn' or 'norm=No' to turn this behavior off.
    Using 4 threads to train.
    Automatically choosing a check frequency of 4.
    Auto-tuning parameters: maxIterations = 9996.
    Auto-tuning parameters: L2 = 2.668802E-05.
    Auto-tuning parameters: L1Threshold (L1/L2) = 0.
    Using best model from iteration 892.
    Not training a calibrator because it is not needed.
    Predicted flower type is: Iris-virginica
    Press any key to continue . . .

    关于.net - 如何将介绍的 ML.Net 演示翻译成 F#?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50322653/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com