Tefla:用tensorflow进行深度学习

Tefla:用tensorflow进行深度学习

Tefla是在tensorflow之上开发的高级API,以便在云/数据中心上更快地建模和部署模型。它还包含最先进的分类,segmentation,generative 和半监督学习模型。除此之外,Tefla还采用了最先进的图像处理,文本处理算法。

现有深度学习引擎的一个重大改进是Tefla使每个人都可以更快地开发深度学习应用程序。它采用模块化设计,可以无缝集成新模块。

Tefla可以处理图像,文本,视频和体积数据。它还可以用于开发游戏环境的强化学习算法。

安装:

pip install tefla

源代码安装:有关更详细的说明,请访问https://github.com/openAGI/tefla

git clone https://github.com/openagi/tefla.git

cd tefla

pip install -r requirements.txt

export PYTHONPATH=.

让我们为IMDB数据集开发一个模型,使用Tefla将电影评论分类为正面和负面类。

1.准备并加载数据集:

使用以下脚本来处理和加载数据集

https://github.com/openAGI/models/blob/master/datasets/imdb.py

import imdb

train, test, _ = imdb.load_data(path='imdb.pkl', n_words=10000, valid_portion=0.1)

需要处理数据集,因为它具有可变长度序列,我们需要使用padding,Python代码如下:

trainX, trainY = train

testX, testY = test

trainX = pad_sequences(trainX, maxlen=100, value=0.)

testX = pad_sequences(testX, maxlen=100, value=0.)

trainY = np.asarray(trainY)

testY = np.asarray(testY)

# use Dataset class from Tefla

data_set = DataSet(trainX, trainY, testX, testY)

这里我们将数据集的词汇量大小视为10000。

2.定义基于LSTM的RNN模型来对句子进行分类。

您也可以使用普通的Conv层来构建文本数据的分类模型。在这个例子中我使用的是lstm。

Tefla具有建立在tensorflow顶部的高级层定义,用于许多RNN cell,例如LSTM,GRU,Attention 等。

在这里,我们将定义一个具有一个嵌入层,一个lstm层和一个最终分类层的模型。嵌入层将输入数据投影到特征维度128的嵌入空间中。

为了避免为所有的层编写相同的参数,我们定义了一个函数来使用commonlayerargs和makeargs来准备普通层参数。

通用参数如is_training或变量重用对所有层都是一样的,可以使用common_layer_args定义,卷积/RNN/全连接层的参数可以使用make_args函数定义在通用参数的顶部。Python代码如下:

def model(x, is_training, reuse, num_classes=2):

common_args = common_layer_args(is_training, reuse)

fc_args = make_args(activation=relu, **common_args)

logit_args = make_args(activation=None, **common_args)

x = embedding(x, 10000, 128, reuse)

x = lstm(x, 34, reuse, is_training)

logits = fc(x, num_classes, name='logits', **logit_args)

predictions = softmax(logits, name='predictions', **common_args)

return end_points(is_training)

3.编写训练循环

我们还需要定义训练配置

training_cnf = {

'classification': True,

'batch_size_train': 32,

'batch_size_test': 32,

'validation_scores': [('accuracy',tf.metrics.accuracy)],

'num_epochs': 50,

'input_size': (100, ),

'lr_policy': StepDecayPolicy(schedule={

0: 0.01,

30: 0.001,

})

}

最后创建op来训练模型

learner = SupervisedLearner(

model,

training_cnf,

classification=training_cnf['classification'],

is_summary=False,

num_classes=2)

训练模型

learner.fit(data_set, weights_from=None, start_epoch=1)

希望你会发现Tefla对深度学习开发很有用。

相关推荐