深度学习Keras(三):路透社(reuters)数据集(多分类问题)

keras内置数据集下载

import numpy as np
import matplotlib.pyplot as plt
from keras.datasets import reuters
from keras import layers, models
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'

#8982个训练样本和2246个测试样本
(train_data, train_labels), (test_data, test_labels) = reuters.load_data(num_words=10000)

#编码,方法同处理imdb二分类(f==1:处理数据,f==2:处理标签)
def vectorize_sequences(sequences, f):
	if f == 1:
		dimension = 10000
	else:
		dimension = 46
	results = np.zeros((len(sequences), dimension))
	for i,k in enumerate(sequences):
		results[i, k] = 1
	return results
	
x_train = vectorize_sequences(train_data, 1)
t_train = vectorize_sequences(train_labels, 2)
x_test = vectorize_sequences(test_data, 1)
t_test = vectorize_sequences(test_labels, 2)

#预留出验证集
val_x = x_train[:1000]
partial_x_train = x_train[1000:]
val_t = t_train[:1000]
partial_t_train = t_train[1000:]

#定义模型
network = models.Sequential()
network.add(layers.Dense(64, activation='relu', input_shape=(10000,)))
network.add(layers.Dense(64, activation='relu'))
network.add(layers.Dense(46, activation='softmax'))

#编译模型
network.compile(optimizer='rmsprop', loss='categorical_crossentropy', metrics=['accuracy'])

#训练模型
History = network.fit(partial_x_train, partial_t_train, epochs=20, batch_size=512, validation_data=(val_x, val_t))

#用训练好的模型衡量测试数据精确度
results = network.evaluate(x_test, t_test)
print(results)

#用训练好的网络预测结果
predictions = network.predict(x_test)
print("预测形状" + str(predictions[0].shape))
print("每一维度向量和" + str(np.sum(predictions[0])))
print("第一个新闻种类" + str(np.argmax(predictions[0])))


#绘制准确率
history_dict = History.history
acc_list = history_dict['accuracy']
val_acc_list = history_dict['val_accuracy']

x = range(1, len(acc_list)+1)

plt.plot(x, acc_list, linestyle=':', label='train_acc')
plt.plot(x, val_acc_list, linestyle='-', label='val_acc')
plt.title('acc data')
plt.xlabel('epochs')
plt.ylabel('accuracy')
plt.legend()
plt.show()

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值