Keras构建RNN网络训练如何实现
Admin 2022-09-16 群英技术资讯 516 次浏览
SimpleRNN用于在Keras中构建普通的简单RNN层,在使用前需要import。
from keras.layers import SimpleRNN
在实际使用时,需要用到几个参数。
model.add( SimpleRNN( batch_input_shape = (BATCH_SIZE,TIME_STEPS,INPUT_SIZE), output_dim = CELL_SIZE, ) )
其中,batch_input_shape代表RNN输入数据的shape,shape的内容分别是每一次训练使用的BATCH,TIME_STEPS表示这个RNN按顺序输入的时间点的数量,INPUT_SIZE表示每一个时间点的输入数据大小。
CELL_SIZE代表训练每一个时间点的神经元数量。
与之前的训练CNN网络和普通分类网络不同,RNN网络在建立时就规定了batch_input_shape,所以训练的时候也需要一定量一定量的传入训练数据。
model.train_on_batch在使用前需要对数据进行处理。获取指定BATCH大小的训练集。
X_batch = X_train[index_start:index_start + BATCH_SIZE,:,:] Y_batch = Y_train[index_start:index_start + BATCH_SIZE,:] index_start += BATCH_SIZE
具体训练过程如下:
for i in range(500): X_batch = X_train[index_start:index_start + BATCH_SIZE,:,:] Y_batch = Y_train[index_start:index_start + BATCH_SIZE,:] index_start += BATCH_SIZE cost = model.train_on_batch(X_batch,Y_batch) if index_start >= X_train.shape[0]: index_start = 0 if i%100 == 0: ## acc cost,accuracy = model.evaluate(X_test,Y_test,batch_size=50) ## W,b = model.layers[0].get_weights() print("accuracy:",accuracy) x = X_test[1].reshape(1,28,28)
这是一个RNN神经网络的例子,用于识别手写体。
import numpy as np from keras.models import Sequential from keras.layers import SimpleRNN,Activation,Dense ## 全连接层 from keras.datasets import mnist from keras.utils import np_utils from keras.optimizers import Adam TIME_STEPS = 28 INPUT_SIZE = 28 BATCH_SIZE = 50 index_start = 0 OUTPUT_SIZE = 10 CELL_SIZE = 75 LR = 1e-3 (X_train,Y_train),(X_test,Y_test) = mnist.load_data() X_train = X_train.reshape(-1,28,28)/255 X_test = X_test.reshape(-1,28,28)/255 Y_train = np_utils.to_categorical(Y_train,num_classes= 10) Y_test = np_utils.to_categorical(Y_test,num_classes= 10) model = Sequential() # conv1 model.add( SimpleRNN( batch_input_shape = (BATCH_SIZE,TIME_STEPS,INPUT_SIZE), output_dim = CELL_SIZE, ) ) model.add(Dense(OUTPUT_SIZE)) model.add(Activation("softmax")) adam = Adam(LR) ## compile model.compile(loss = 'categorical_crossentropy',optimizer = adam,metrics = ['accuracy']) ## tarin for i in range(500): X_batch = X_train[index_start:index_start + BATCH_SIZE,:,:] Y_batch = Y_train[index_start:index_start + BATCH_SIZE,:] index_start += BATCH_SIZE cost = model.train_on_batch(X_batch,Y_batch) if index_start >= X_train.shape[0]: index_start = 0 if i%100 == 0: ## acc cost,accuracy = model.evaluate(X_test,Y_test,batch_size=50) ## W,b = model.layers[0].get_weights() print("accuracy:",accuracy)
实验结果为:
10000/10000 [==============================] - 1s 147us/step accuracy: 0.09329999938607215 ………………………… 10000/10000 [==============================] - 1s 112us/step accuracy: 0.9395000022649765 10000/10000 [==============================] - 1s 109us/step accuracy: 0.9422999995946885 10000/10000 [==============================] - 1s 114us/step accuracy: 0.9534000000357628 10000/10000 [==============================] - 1s 112us/step accuracy: 0.9566000008583069 10000/10000 [==============================] - 1s 113us/step accuracy: 0.950799999833107 10000/10000 [==============================] - 1s 116us/step 10000/10000 [==============================] - 1s 112us/step accuracy: 0.9474999988079071 10000/10000 [==============================] - 1s 111us/step accuracy: 0.9515000003576278 10000/10000 [==============================] - 1s 114us/step accuracy: 0.9288999977707862 10000/10000 [==============================] - 1s 115us/step accuracy: 0.9487999993562698
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
这篇文章主要介绍python中的被动信息搜集的三种方法,下文有具体的解释和代码,对新手理解python中的被动信息搜集具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章能有所收获,接下来小编带着大家一起了解看看。
pandas中为啥尽量不使用for循环?很多新手可能对此不是很了解,其实相比使用for循环,有一些别的方法和技巧能更好的提升pandas运行时间,下面我们就一起来了解一下。
这篇文章主要介绍了python开发sdk模块,通过setup.py将框架安装到python环境中,开发成第三方模块来, 以此来调用,增加使用方便及安全高效性,需要的朋友可以参考下
不管是在学习还是工作过程中,人都会犯错。虽然Python的语法简单、灵活,但也一样存在一些不小的坑,一不小心,初学者和资深Python
这篇文章主要介绍了pandas 如何保存数据到excel,csv的实现方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008