MLModel.CompileModel(NSUrl, NSError) 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
에서 modelUrl
모델을 컴파일합니다.
[Foundation.Export("compileModelAtURL:error:")]
public static Foundation.NSUrl CompileModel (Foundation.NSUrl modelUrl, out Foundation.NSError error);
static member CompileModel : Foundation.NSUrl * -> Foundation.NSUrl
매개 변수
- modelUrl
- NSUrl
컴파일할 모델에 대한 URL입니다.
- error
- NSError
실패 시 발생한 오류입니다.
반환
- 특성
설명
비용이 많이 드는 함수입니다. 실행 시간은 모델 크기에 따라 다르지만 개발자는 백그라운드 스레드에서 이 메서드를 실행하고 이 메서드를 반복적으로 실행할 필요가 없도록 조치를 취해야 합니다.
다음 예제에서는 개발자가 모델을 다운로드하고, 컴파일하고, 컴파일된 모델을 앱의 영구 스토리지로 이동하는 방법을 보여 줍니다.
NSUrl CompileModel(string modelName)
{
var downloadedFile = modelName + ".mlmodel";
var fileUrl = NSUrl.FromFilename(downloadedFile);
NSError err = null;
var compiledUrl = MLModel.CompileModel(fileUrl, out err);
if (err != null)
{
throw new Exception(err.ToString());
}
return compiledUrl;
}
NSUrl StoreModel(NSUrl sourceUrl)
{
var fileManager = NSFileManager.DefaultManager;
NSError err = null;
var appSupportDirectory = fileManager.GetUrl(NSSearchPathDirectory.ApplicationSupportDirectory, NSSearchPathDomain.User, sourceUrl, true, out err);
if (err != null)
{
throw new Exception(err.ToString());
}
// Create a permanent URL in appSupportDirectory
var destinationUrl = appSupportDirectory.Append(sourceUrl.LastPathComponent, true);
NSUrl resultingUrl = null;
var destPath = destinationUrl.AbsoluteString;
// If the compiled model directory exists, replace it
if (System.IO.Directory.Exists(destinationUrl.Path))
{
fileManager.Replace(destinationUrl, sourceUrl, null, NSFileManagerItemReplacementOptions.None, out resultingUrl, out err);
}
else
{
fileManager.Copy(sourceUrl, destinationUrl, out err);
}
if (err != null)
{
throw new Exception(err.ToString());
}
return resultingUrl;
}
private async Task<NSUrl> DownloadAndStoryCoreMLModelAsync()
{
var modelName = "SomeModel";
var sourceUrl ="https://Contoso.org/SomeModel.mlmodel";
using (var wc = new WebClient())
{
await wc.DownloadFileTaskAsync(sourceUrl, modelName +".mlmodel");
var compiledModelPath = CompileModel(modelName);
var finalPath = StoreModel(compiledModelPath);
return finalPath;
}
}