将代码从TFLearn转换为在Keras中工作

2024-04-29 23:08:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用TFLearn编写的一些代码作为参考,并尝试使用Keras重新编写它。我对这两个包都很陌生,我不确定我是否写得很好。在

我已经试过我的代码了-它是有效的-但是我没有得到预期的结果(准确度没有提高超过20个时代),我想知道我是否在某个地方犯了错误。在

就我的数据而言,我有一个'data'目录,其中有'train'和'validation'目录。我的每3个类中的每个类都有3个目录。在

原始TFLearn代码:

import numpy as np
import tflearn
from tflearn.layers.conv import conv_2d, max_pool_2d
from tflearn.layers.core import input_data, dropout, fully_connected
from tflearn.layers.estimator import regression

def createModel(nbClasses,imageSize):

    convnet = input_data(shape=[None, imageSize, imageSize, 1], name='input')

    convnet = conv_2d(convnet, 64, 2, activation='elu', weights_init="Xavier")
    convnet = max_pool_2d(convnet, 2)

    convnet = conv_2d(convnet, 128, 2, activation='elu', weights_init="Xavier")
    convnet = max_pool_2d(convnet, 2)

    convnet = conv_2d(convnet, 256, 2, activation='elu', weights_init="Xavier")
    convnet = max_pool_2d(convnet, 2)

    convnet = conv_2d(convnet, 512, 2, activation='elu', weights_init="Xavier")
    convnet = max_pool_2d(convnet, 2)

    convnet = fully_connected(convnet, 1024, activation='elu')
    convnet = dropout(convnet, 0.5)

    convnet = fully_connected(convnet, nbClasses, activation='softmax')
    convnet = regression(convnet, optimizer='rmsprop', loss='categorical_crossentropy')

    model = tflearn.DNN(convnet)
return model

我使用Keras的代码:

^{pr2}$

Tags: 代码fromimport目录datainitactivationmax
1条回答
网友
1楼 · 发布于 2024-04-29 23:08:02

我用MNIST数据集的三个类尝试了你的代码,可以很好地训练。准确度在第一个时期如预期的那样提高。在

至少对于MNIST,我可以通过使用前两个Conv层和一个64层的密集层来更快地训练。根据您的数据,我建议您尝试使用一个更简单的模型(即2个Conv层),检查模型是否正在学习,然后从中改进。在

相关问题 更多 >