FlyAI是一个关于深度学习的数据竞赛平台,上边有很多很多的项目可以参加竞赛,而且还有很多奖金。(本次写的比较随意,就不注重太多的格式了)
写这篇文章的目的是为了让像我一样第一次参加竞赛面对竞赛却不知道如何下手的同学给出一些方法。
本次参加的竞赛是图片鉴黄大赛,接下来介绍一下如何在FlyAI中给出的各个模块的功能以及如何在各个模块中编写代码。
在FlyAI给出的样例代码中主要有四个模块,第一个主要的模块是main.py,我们可以在这个模块里搭建我们的网络模型,第二个模块是processor.py模块,在这个模块里我们可以对我们的数据进行处理。
在processor模块中,是对数据集进行预处理
def input_x(self, image_path): path = check_download(image_path, DATA_PATH) image = cv2.imread(path) image = cv2.resize(image, (224, 224), interpolation=cv2.INTER_CUBIC) x_data = numpy.array(image) x_data = x_data.astype(numpy.float32) x_data = numpy.multiply(x_data, 1.0 / 255.0) return x_data ‘‘‘ 参数为csv中作为输入y的一条数据,该方法会被dataset.next_train_batch() 和dataset.next_validation_batch()多次调用。 该方法字段与app.yaml中的output:->columns:对应 ‘‘‘ def input_y(self, label): one_hot_label = numpy.zeros([5]) ##生成全0矩阵 one_hot_label[label] = 1 ##相应标签位置置 return one_hot_label 在对数据进行预处理后,我们就可以搭建网络模型,这里我们举出一个例子
dataset = Dataset(epochs=args.EPOCHS, batch=args.BATCH) model = Model(dataset) ‘‘‘ 实现自己的网络机构 ‘‘‘ sqeue = Sequential() # 第一个卷积层,32个卷积核,大小5x5,卷积模式SAME,激活函数relu,输入张量的大小 sqeue.add(Conv2D(filters=32, kernel_size=(5, 5), padding=‘Same‘, activation=‘relu‘, input_shape=(224, 224, 3))) sqeue.add(Conv2D(filters=32, kernel_size=(5, 5), padding=‘Same‘, activation=‘relu‘)) # 池化层,池化核大小2x2 sqeue.add(MaxPool2D(pool_size=(2, 2))) sqeue.add(Dropout(0.25)) sqeue.add(Conv2D(filters=64, kernel_size=(3, 3), padding=‘Same‘, activation=‘relu‘)) sqeue.add(Conv2D(filters=64, kernel_size=(3, 3), padding=‘Same‘, activation=‘relu‘)) sqeue.add(MaxPool2D(pool_size=(2, 2), strides=(2, 2))) sqeue.add(Dropout(0.25)) # 全连接层,展开操作, sqeue.add(Flatten()) # 添加隐藏层神经元的数量和激活函数 sqeue.add(Dense(256, activation=‘relu‘)) sqeue.add(Dropout(0.25)) # 输出层 sqeue.add(Dense(5, activation=‘softmax‘)) # 输出模型的整体信息 sqeue.summary() sqeue.compile(loss=‘categorical_crossentropy‘, optimizer=‘adam‘, metrics=[‘accuracy‘]) ‘‘‘
原文地址:https://www.cnblogs.com/yangzepeng/p/12106159.html
时间: 2024-10-10 12:58:06