ML.NET: 为什么我必须训练一个预训练模型?

我想使用预训练模型(如InceptionV1/V3)进行图像分类。

因此,我在ML.NET中设置了一个管道来加载这个TensorFlow模型。但是在我找到的每个教程中都提到,你需要在加载后训练这个模型才能得到一个模型。

例如,这里:https://learn.microsoft.com/en-US/dotnet/machine-learning/tutorials/image-classification

=> 使用上面加载的数据训练模型:=> ITransformer model = pipeline.Fit(trainingData);

为什么不能在没有训练数据的情况下直接调用Fit()呢?因为我只想使用原始加载的模型而不做任何修改。它已经被谷歌用数百万张图片训练过,应该足以满足我所有的需求了。

谢谢你的建议!


回答:

你不需要再次训练模型。只要加载它,然后使用它进行预测。需要注意的是,模型是在ImageNet数据集上训练的。这个数据集有1000个类别。你的图像类型可能包含在这些类别中,也可能不包含。为了使模型适应你的应用,你应该使用你的自定义数据集进行训练。例如,如果你有一个包含250种鸟类的训练集,每个类别有一个单独的目录,并且你想对鸟类进行分类,那么你应该按以下方式使用Inception模型。

img_size= (224,224)  # 将此设置为你想要使用的图像大小
img_shape=(224,224,3) # 将此设置为输入图像的形状
no_of_classes =250     # 将此设置为类别的整数值
train_dir=r'c:\birds\train'   # 指向你的训练目录
t_gen=ImageDataGenerator(preprocessing_function=tf.keras.applications.inception_v3.preprocess_input,  validation_split=0.3)
train_gen=t_gen.flow_from_directory( directory= train_dir, target_size=img_size,            class_mode="categorical",  batch_size=32, shuffle=True, seed=123,            subset='training')
valid_gen=t_gen.flow_from_directory(directory= train_dir, target_size=img_size,            class_mode="categorical", batch_size=32, shuffle=False, seed=123,            subset='validation')
base_model=tf.keras.applications.InceptionV3( include_top=False, weights="imagenet",               input_shape=img_shape, pooling='max')
x=base_model.output
x= Dense(512, activation='relu')(x)
x= Dropout(.3)(x)
output=Dense(no_of_classes, activation='softmax')(x)
model=Model(inputs=base_model.input, outputs=output)
model.compile(Adam(lr=.001), loss='categorical_crossentropy', metrics=['accuracy'])
history=model.fit(x=train_gen,  epochs=20, verbose=2,                     validation_data=valid_gen, shuffle=False,  initial_epoch=0)

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注