4.3 keras基础实例 --- 电影评价预测 --- 文本向量化 ---- K-hot编码

1)K-hot编码

# 文本向量化
import numpy as np
 
def k_hot(seqs, dim=10000):
    result = np.zeros((len(seqs), dim))
    for i,seq in enumerate(seqs):
        result[i, seq] = 1
    return result

即其思想是将每条评论都转换为10000长度的列表,单词出现的地方置为1,没有出现的地方置为0

譬如,[1, 1, 1, 0, 0 , ·····,0,1] 代表某个评论,其长度为10000

打印经过K-hot编码后的数据信息

x_train = k_hot(x_train)
x_train.shape

x_train[0].shape

y_train

        发现是有0,1两种情况,所以他是一个二分类问题,

        对于二分类问类,是使用sigmoid激活函数

 2)建立模型

model = keras.Sequential()
model.add(layers.Dense(32, input_dim=10000, activation='relu'))
model.add(layers.Dense(32, activation='relu'))
model.add(layers.Dense(1, activation='sigmoid'))
model.summary()

 模型各层详情

3)编译模型

model.compile(optimizer='adam',
             loss='binary_crossentropy',
             metrics=['acc'])

4)训练模型

history = model.fit(x_train,y_train, epochs=15,batch_size=256,
                   validation_data=(x_test,y_test))

 5)图形化展示效果

plt.plot(history.epoch, history.history.get('loss'), c='r', label='loss')
plt.plot(history.epoch, history.history.get('val_loss'), c='b', label='val_loss')
plt.legend()

发现经过一个Epoch后就发现对于测试集上的loss在增大了,出现了过拟合 

plt.plot(history.epoch, history.history.get('acc'), c='r', label='acc')
plt.plot(history.epoch, history.history.get('val_acc'), c='b', label='val_acc')
plt.legend()

 

6)优化

        1、适当减小网络规模

        2、引入DorpOut层

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值