机器学习和深度学习中关于图像数据输入的“shape” | 您所在的位置:网站首页 › shapes是什么意思怎么读 › 机器学习和深度学习中关于图像数据输入的“shape” |
机器学习
在机器学习的图片输入数据中,只需要将图片数据的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 实验室设备网 版权所有 |