import tensorflow as tf from tensorflow import keras from tensorflow.keras import layers
import matplotlib.pyplot as plt %matplotlib inline
加载Tensorflow的dataset数据
1 2 3
| data = keras.datasets.imdb#电影评论数据 max_word = 10000 (x_train,y_train),(x_test,y_test) = data.load_data(num_words=max_word)
|
文本训练场密集向量
1 2
| x_train = keras.preprocessing.sequence.pad_sequences(x_train,300) x_test = keras.preprocessing.sequence.pad_sequences(x_test,300)
|
创建模型
1 2 3 4 5 6 7
| model = keras.models.Sequential() model.add(layers.Embedding(10000,50,input_length=300)) #(None,300,50) #model.add(layers.Flatten())#Flatten转换为二维 model.add(layers.GlobalAveragePooling1D())#Flatten转换为二维 model.add(layers.Dense(64,activation='relu')) model.add(layers.Dense(1,activation='sigmoid'))#二分类问题,y_train
|
配置模型
1 2 3 4
| model.compile(optimizer=tf.keras.optimizers.Adam(learning_rate=0.001), loss=tf.keras.losses.BinaryCrossentropy(), metrics=['acc'] )
|
模型训练
1
| history = model.fit(x_train,y_train,epochs=15,batch_size=256,validation_data=(x_test,y_test))
|
查看history中的参数
dict_keys(['loss', 'acc', 'val_loss', 'val_acc'])
绘制loss变化曲线
1 2
| plt.plot(history.epoch,history.history['loss'],'r') plt.plot(history.epoch,history.history['val_loss'],'b--')
|

绘制accuracy变化曲线
1 2
| plt.plot(history.epoch,history.history['acc'],'r') plt.plot(history.epoch,history.history['val_acc'],'b--')
|

解决过拟合问题:1:dropout层 2:l2,l1