问题描述:
GRU神经元中包含两个门,分别是:更新和复位
代码展示:
from gc import callbacks
import numpy as np
import pandas as pd
from keras.preprocessing import sequence
from keras.models import Sequential
from keras.layers import Dense,Dropout,Activation
from keras.layers import Embedding,GRU
from keras.callbacks import EarlyStopping
from keras.datasets import imdb
n_words = 1000
(X_train,y_train),(X_test,y_test) = imdb.load_data(num_words=n_words)
print("train seq:{}".format(len(X_train)))
print("test seq:{}".format(len(X_test)))
#填充序列,为网络准备输入数据
max_len = 200
X_train = sequence.pad_sequences(X_train,maxlen=max_len)
X_test = sequence.pad_sequences(X_test,maxlen=max_len)
#定义网络架构并编译
model = Sequential()
model.add(Embedding(n_words,50,input_length=max_len))
model.add(Dropout(0.2))
model.add(GRU(100,dropout=0.2,recurrent_dropout=0.2))
model.add(Dense(250,activation='relu'))
model.add(Dropout(0.2))
model.add(Dense(1,activation = 'sigmoid'))
model.compile(loss='binary_crossentropy',optimizer='adam',metrics=['acc'])
model.summary()
#调用callback防止过拟合
callbacks = [EarlyStopping(monitor='val_acc',patience=3)]
#定义超参数开始训练网络
batch_size = 512
n_epochs = 10
model.fit(X_train,y_train,batch_size = batch_size,epochs = n_epochs,validation_split = 0.2,callbacks=callbacks)
print('acc on the test set:{}'.format(model.evaluate(X_test,y_test)))
实现截图:
参考:
《Python深度学习实战:75个有关神经网络建模、强化学习与迁移》