AI-039: Python深度学习3 - 三个Karas实例-1

实例:通过imdb的评价数据来分析电影的好坏。

套路:

1. 预处理数据

2. 建立网络模型(层数、每层节点数、激活函数)

3. 选取损失函数、优化器,训练轮次及批量大小

4. 使用训练集训练模型

5. 根据训练结果调整2、3

6. 使用校验集校验模型

7. 根据校验结果调整2、3

8. 使用测试集预测结果

9. 根据测试结果调整2、3

10. 最终获得满意的模型:)

最终的代码很简单,技术红利时代,造就了技术人员的层次天壤之别。

加载数据

from keras.datasets import imdb
# imdb 电影评论数据库,样本是评论中单词对应的索引
(train_data, train_labels), (test_data, test_labels) = imdb.load_data(num_words=10000)

预处理数据,主要是把训练及测试数据从出现单词的编码向量,转化为单词是否出现的0/1向量

比如有条评价是:good movie 对应词典中的索引是93, 103,那么最初的向量是[93,103] 这样的向量会根据评价的内容长度不同,不能满足深度学习网络输入数据的需要。一种转变方式就是,用10000个高频单词是否出现来表示,good movie就可以转变为[0,0,0...1,0,0...,1,0,0...]第93和103是1,其他9998个元素都是0

import numpy as np
def vectorize_sequences(sequences, dimension=10000):
    # Create an all-zero matrix of shape (len(sequences), dimension)
    results = np.zeros((len(sequences), dimension))
    for i, sequence in enumerate(sequences):
        results[i, sequence] = 1.  # set specific indices of results[i] to 1
    return results

x_train = vectorize_sequences(train_data)
x_test = vectorize_sequences(test_data)

y_train = np.asarray(train_labels).astype('float32')
y_test = np.asarray(test_labels).astype('float32')

预处理过的数据就可以送入网络中进行学习了。先构建网络模型:1个输入、1个隐藏、1个输出,输入和隐藏层都是16个元素

隐藏层数和元素个数搜视『凭经验』选择的,根据训练结果==不断优化。激活函数是RELU(Rectified Linear Unit,修正线性单元)是最常用的激活函数。最后输出层采用sigmodid,将输出转化为0-1之间的数值,表示概率值。

from keras import models
from keras import layers

model = models.Sequential()
model.add(layers.Dense(16, activation='relu', input_shape=(10000,)))
model.add(layers.Dense(16, activation='relu'))
model.add(layers.Dense(1, activation='sigmoid')

接下来选择损失函数和优化器,并选择评估标准。这里可以选择karas自带的,也可以自定义优化器和损失函数。

model.compile(optimizer='rmsprop',
              loss='binary_crossentropy',
              metrics=['accuracy'])

训练及验证模型,这里训练4轮次,批量大小为512个样本

history = model.fit(partial_x_train, 
                    partial_y_train, 
                    epochs=4, 
                    batch_size=512, 
                    validation_data=(x_val, y_val))

单独验证

results = model.evaluate(x_test, y_test)

预测

model.predict(x_test)

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

铭记北宸

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值