什么是numpy.resize(image,(IMG_HEIGHT,IMG_WIDTH,3))中的3?

在尝试构建一个机器学习的字母分类器时,这段代码用于从文件夹中使用PIL创建图像数据和标签。

def create_dataset_PIL(img_folder):
    img_data_array=[]
    class_name=[]
    for dir1 in os.listdir(img_folder):
        print(dir1)
        for file in os.listdir(os.path.join(img_folder, dir1)):
            image_path= os.path.join(img_folder, dir1,  file)
            image= np.array(Image.open(image_path))
            image= np.resize(image,(IMG_HEIGHT,IMG_WIDTH,3))
            image = image.astype('float32')
            image /= 255 
            img_data_array.append(image)
            class_name.append(dir1)
    return img_data_array , class_name

数据集中每张图像已经是32 x 32像素,我将其调整为32 x 32 x 3的维度列表。但我不明白,为什么需要第三个维度?我只需要32 x 32像素的图像。

我在Numpy Resize/Rescale Image上发现了相关信息,了解到这可能是插值参数。从YouTube上我还了解到,调整图像大小需要进行插值。但我不知道该如何处理这些额外的数据?我的神经网络的输入层大小现在应该改为32 x 32 x 3而不是32 x 32吗?


回答:

3代表RGB(红色-绿色-蓝色)值。每张图像的每个像素由3个值表示,而不是一个。在黑白图像中,每个像素由[pixel]表示,而在RGB图像中,每个像素由[pixel(R),pixel(G),pixel(B)]表示。

实际上,图像的每个像素都有3个RGB值。这些值在0到255之间,代表红色、绿色和蓝色的强度。较低的值表示较高的强度,较高的值表示较低的强度。例如,一个像素可以表示为这三个值的列表[78, 136, 60]。黑色则表示为[0, 0, 0]。

是的:你的输入层应该匹配这个32x32x3的尺寸。

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中创建了一个多类分类项目。该项目可以对…

发表回复

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