ImageClassificationTrainer Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Para IEstimator<TTransformer> treinar uma DNN (Rede Neural Profunda) para classificar imagens.
public sealed class ImageClassificationTrainer : Microsoft.ML.Trainers.TrainerEstimatorBase<Microsoft.ML.Data.MulticlassPredictionTransformer<Microsoft.ML.Vision.ImageClassificationModelParameters>,Microsoft.ML.Vision.ImageClassificationModelParameters>
type ImageClassificationTrainer = class
inherit TrainerEstimatorBase<MulticlassPredictionTransformer<ImageClassificationModelParameters>, ImageClassificationModelParameters>
Public NotInheritable Class ImageClassificationTrainer
Inherits TrainerEstimatorBase(Of MulticlassPredictionTransformer(Of ImageClassificationModelParameters), ImageClassificationModelParameters)
- Herança
-
TrainerEstimatorBase<MulticlassPredictionTransformer<ImageClassificationModelParameters>,ImageClassificationModelParameters>ImageClassificationTrainer
Comentários
Para criar esse treinador, use ImageClassification.
Colunas de entrada e saída
Os dados da coluna do rótulo de entrada devem ser de tipo de chave e a coluna de recurso deve ser um vetor de tamanho variável de Byte.
Este treinador gera as seguintes colunas:
| Nome da coluna de saída | Tipo de Coluna | Descrição |
|---|---|---|
Score |
Vetor deSingle | As pontuações de todas as classes. Valor mais alto significa maior probabilidade de cair na classe associada. Se o elemento i-th tiver o maior valor, o índice de rótulo previsto será i.Observe que eu é um índice baseado em zero. |
PredictedLabel |
Tipo de chave | O índice do rótulo previsto. Se o valor for i, o rótulo real será a categoria i-th no tipo de rótulo de entrada com valor de chave. |
Características do Treinador
| Tarefa de machine learning | Classificação multiclasse |
| A normalização é necessária? | No |
| O cache é necessário? | No |
| NuGet necessário além de Microsoft.ML | Microsoft.ML.Vision e SciSharp.TensorFlow.Redist / SciSharp.TensorFlow.Redist-Windows-GPU / SciSharp.TensorFlow.Redist-Linux-GPU |
| Exportável para ONNX | No |
Usando APIs baseadas em TensorFlow
Para executar as APIs de ML.Net baseadas no TensorFlow, primeiro você deve adicionar uma dependência do NuGet à biblioteca redista tensorFlow. Atualmente, há duas versões que você pode usar. Uma que é compilada para suporte à GPU e outra que tem suporte apenas para CPU.
Somente CPU
Atualmente, há suporte para TensorFlow baseado em CPU em:
- Linux
- MacOS
- Windows
Para fazer o TensorFlow funcionar na CPU, basta usar uma dependência do NuGet em SciSharp.TensorFlow.Redist v1.14.0
Suporte de GPU
Atualmente, há suporte para TensorFlow baseado em GPU em:
- Windows
- Linux A partir de agora, o TensorFlow não dá suporte à execução em GPUs para MacOS, portanto, não podemos dar suporte a isso no momento.
Pré-requisitos
Você deve ter pelo menos uma GPU compatível com CUDA, para obter uma lista de GPUs compatíveis, consulte o Guia da Nvidia.
Instale o CUDA v10.1 e CUDNN v7.6.4.
Instale o CUDA v10.1, não qualquer outra versão mais recente. Depois de baixar o arquivo cudnn v7.6.4 .zip e descompactá-lo, você precisa executar as seguintes etapas:
copy <CUDNN_zip_files_path>\cuda\bin\cudnn64_7.dll to <YOUR_DRIVE>\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\bin
Para desenvolvimento em C/C++:
Copy <CUDNN_zip_files_path>\cuda\ include\cudnn.h to <YOUR_DRIVE>\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\include
Copy <CUDNN_zip_files_path>\cuda\lib\x64\cudnn.lib to <YOUR_DRIVE>\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\lib\x64
Para obter mais detalhes em cuDNN, você pode seguir o guia de instalação cuDNN.
Usage
Para usar o TensorFlow com suporte à GPU, use uma dependência do NuGet no seguinte pacote, dependendo do sistema operacional:
- Windows -> SciSharp.TensorFlow.Redist-Windows-GPU
- Linux -> SciSharp.TensorFlow.Redist-Linux-GPU
Nenhuma modificação de código deve ser necessária para aproveitar a GPU para operações tensorFlow.
Solução de problemas
Se você não conseguir usar sua GPU depois de adicionar o TensorFlow NuGet baseado em GPU, verifique se há apenas uma dependência na versão baseada em GPU. Se você tiver uma dependência em ambos os NuGets, o TensorFlow baseado em CPU será executado.
Detalhes do algoritmo de treinamento
Treina uma DNN (Rede Neural Profunda) aproveitando um modelo pré-treinado existente, como o Resnet50, com a finalidade de classificar imagens. A técnica foi inspirada no tutorial de classificação de imagem de retreinamento do TensorFlow
Campos
| Nome | Description |
|---|---|
| FeatureColumn |
A coluna de recursos que o treinador espera. (Herdado de TrainerEstimatorBase<TTransformer,TModel>) |
| LabelColumn |
A coluna de rótulo que o treinador espera. Pode ser |
| WeightColumn |
A coluna de peso que o treinador espera. Pode ser |
Propriedades
| Nome | Description |
|---|---|
| Info |
Informações auxiliares sobre o treinador em termos de seus recursos e requisitos. |
Métodos
| Nome | Description |
|---|---|
| Finalize() |
Para IEstimator<TTransformer> treinar uma DNN (Rede Neural Profunda) para classificar imagens. |
| Fit(IDataView, IDataView) |
Treina um ImageClassificationTrainer usando dados de treinamento e validação, retorna um ImageClassificationModelParameters. |
| Fit(IDataView) |
Treina e retorna um ITransformer. (Herdado de TrainerEstimatorBase<TTransformer,TModel>) |
| GetOutputSchema(SchemaShape) |
Para IEstimator<TTransformer> treinar uma DNN (Rede Neural Profunda) para classificar imagens. (Herdado de TrainerEstimatorBase<TTransformer,TModel>) |
Métodos de Extensão
| Nome | Description |
|---|---|
| AppendCacheCheckpoint<TTrans>(IEstimator<TTrans>, IHostEnvironment) |
Acrescente um 'ponto de verificação de cache' à cadeia do avaliador. Isso garantirá que os avaliadores downstream serão treinados em relação aos dados armazenados em cache. É útil ter um ponto de verificação de cache antes dos treinadores que têm várias passagens de dados. |
| WithOnFitDelegate<TTransformer>(IEstimator<TTransformer>, Action<TTransformer>) |
Dado um avaliador, retorne um objeto de encapsulamento que chamará um delegado uma vez Fit(IDataView) chamado. Geralmente, é importante que um avaliador retorne informações sobre o que estava em forma, e é por isso que o Fit(IDataView) método retorna um objeto especificamente tipado, em vez de apenas um geral ITransformer. No entanto, ao mesmo tempo, IEstimator<TTransformer> muitas vezes são formados em pipelines com muitos objetos, portanto, talvez seja necessário criar uma cadeia de avaliadores por meio EstimatorChain<TLastTransformer> de onde o avaliador para o qual queremos obter o transformador está enterrado em algum lugar nessa cadeia. Para esse cenário, podemos por meio desse método anexar um delegado que será chamado assim que o ajuste for chamado. |