机器学习和深度学习中关于图像数据输入的“shape” 您所在的位置:网站首页 shapes是什么意思怎么读 机器学习和深度学习中关于图像数据输入的“shape”

机器学习和深度学习中关于图像数据输入的“shape”

2023-07-07 08:08| 来源: 网络整理| 查看: 265

 

机器学习

 

    在机器学习的图片输入数据中,只需要将图片数据的4维(图片的多少,图片的长,图片的宽,图片的通道数)转换为2维即可

train_data = train_data.reshape(train_data.shape[0], train_data.shape[1] * train_data.shape[2] * train_data.shape[3])

 

深度学习

 

1. 读取图片阶段:

item_image = cv2.imread(img_path) item_image = cv2.resize(item_image, (224,224), interpolation=cv2.INTER_AREA)

cv2.imread()是为了读取图片上的数据,也就是原始图像数据的信息。

在cv2.resize()中,可以指定输出图片的大小,也就是图片的长和宽。

 

2. 把读取到的数据转换成ndarray。

train_data = np.array(train_data, dtype='float32')

此时,如果打印train_data的维度,会显示一个4个维度的数据,(图片的数量,图片的长,图片的宽,图片的通道数)

 

3. 最后一步,就是在搭建模型阶段,在input_shape=(224, 224, 3)中指定长、宽和通道数。

以下为代码实例片段:

model = Sequential() # 第一个卷积层,32个卷积核,大小5x5,卷积模式SAME,激活函数relu,输入张量的大小 model.add(Conv2D(filters= 32, kernel_size=(5,5), padding='Same', activation='relu', input_shape=(224, 224, 3))) #图片大小224*224,通道数为3 # model.add(Conv2D(filters= 32, kernel_size=(5,5), padding='Same', activation='relu')) # 池化层,池化核大小2x2 model.add(MaxPool2D(pool_size=(2,2))) # 随机丢弃四分之一的网络连接,防止过拟合 model.add(Dropout(0.25)) model.add(Conv2D(filters= 64, kernel_size=(3,3), padding='Same', activation='relu')) # model.add(Conv2D(filters= 64, kernel_size=(3,3), padding='Same', activation='relu')) model.add(MaxPool2D(pool_size=(2,2), strides=(2,2))) model.add(Dropout(0.25)) model.add(Dropout(0.25)) model.add(Conv2D(filters= 128, kernel_size=(3,3), padding='Same', activation='relu')) # model.add(Conv2D(filters= 128, kernel_size=(3,3), padding='Same', activation='relu')) model.add(MaxPool2D(pool_size=(2,2), strides=(2,2))) model.add(Dropout(0.25)) # 全连接层,展开操作, model.add(Flatten()) # 添加隐藏层神经元的数量和激活函数 model.add(Dense(256, activation='relu')) model.add(Dropout(0.25)) # 输出层 model.add(Dense(2, activation='sigmoid')) # 设置优化器 # lr :学习效率, decay :lr的衰减值 # optimizer = adam(lr = 0.001, decay=0.0) # 编译模型 # loss:损失函数,metrics:对应性能评估函数 model.compile(optimizer='adam', loss = 'categorical_crossentropy', metrics=['accuracy']) model.fit(train_x, train_y, batch_size=10 ,epochs= 15, validation_data = (val_x, val_y), verbose=1, shuffle=True)

 

(以上为个人在实践中的一些经验,如有不对,请在评论区指正,谢谢)



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有