加载imdb数据以及TensorBoard的使用方法

加载imdb数据

修改imdb.py

这里我把imdb数据下载下来,放在keras>datasets文件夹下面,并且需要修改一下imdb.py文件

# path = get_file(path,
# origin='https://s3.amazonaws.com/text-datasets/imdb.npz',
# file_hash='599dadb1135973df5b59232a0e9a887c')
    path = r'D:\pythonText\venv\Lib\site-packages\keras\datasets\imdb.npz'

这里把原来使用的path路径注释掉,使用我们用来放置imdb.npz的路径

加载imdb数据
from keras.datasets import imdb
from keras import preprocessing

max_feature = 10000
max_len = 100

(train_data, train_labels), (test_data, test_labels) = imdb.load_data(num_words=max_feature)
train_data = preprocessing.sequence.pad_sequences(train_data, maxlen=max_len, truncating='post')

(train_data, train_labels), (test_data, test_labels) = imdb.load_data(num_words=max_feature)
代码的意思是加载最常用的max_feature=10000个词,这10000词在接下来中会用于Embedding层,这个层的作用是把10000个词嵌入到高维度中

train_data = preprocessing.sequence.pad_sequences(train_data, maxlen=max_len, truncating='post')
代码的意思是会对train_data的数据截断,只会保留前max_len=100个词,注意 truncating='post'的含义是截断的位置在后面,即从前开始选取100个词,truncating='pre'的含义是截断位置在前面,即从最后开始选取100个词,感觉这个地方要反着来理解。

模型搭建

import tensorflow as tf

log_dir = os.path.join("data\logDir")
if not os.path.exists(log_dir):
    os.mkdir(log_dir)

callbacks = [
    tf.keras.callbacks.TensorBoard(
        log_dir=log_dir,
        histogram_freq=1,
        embeddings_freq=1,
    )
]
model = tf.keras.models.Sequential()
model.add(tf.keras.layers.Embedding(10000, 8, input_length=max_len))
model.add(tf.keras.layers.GRU(32, dropout=0.2, recurrent_dropout=0.2))
model.add(tf.keras.layers.Dense(1, activation='sigmoid'))
model.compile(optimizer='rmsprop',
              loss='binary_crossentropy',
              metrics=['acc'])
model.summary()
(一)注意事项

log_dir = os.path.join("data\logDir")
使用TensorBoard的时候,win10平台下一定要用上面代码把路径包起来

这个地方"data\logDir",最好可能也许大概这个文件用mkdir创建一下,我在操作的时候自己创建了这个文件,然后就就会报错

tf.keras
所有的keras前面都要用tf,这是应为要是不用tf.keras的话会存在keras和tf.keras混用的情况,会报错,这里我觉得TensorBoard就是Tensorflow里面的,所以这里调用的keras也是Tensorflow里面的才行,强行理解一波哈哈哈

(二)代码说明

tf.keras.callbacks.TensorBoard( log_dir=log_dir, histogram_freq=1, embeddings_freq=1, )
histogram_freq=1的含义是激活函数直方图,从这个图中可以看出来有没有梯度消失之类的问题,embeddings_freq=1的含义是画出Embeding层

梯度消失
下面这张图片是5层神经网络的激活输出值,激活函数用的是sigmoid
在这里插入图片描述
从激活函数的输出值我们可以看出,sigmoid的输出是大多是是0和1,在sigmoid函数中,函数值越接近0和1也就意味这,函数在该点的导数趋近于0,所以在后面的反向求导过程中会使得反向传播没有意义

训练模型

history = model.fit(train_data,
                    train_labels,
                    batch_size=128,
                    epochs=3,
                    validation_split=0.2,
                    callbacks=callbacks)

利用TensorBoard查看结果

在命令行输入

tensorboard --logdir=data\logDir

准确率和损失函数

激活函数直方图,还不怎么会看哈哈
在这里插入图片描述
Embeding层,用了PCA降维
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
boston_housing module: Boston housing price regression dataset. cifar10 module: CIFAR10 small images classification dataset. cifar100 module: CIFAR100 small images classification dataset. fashion_mnist module: Fashion-MNIST dataset. imdb module: IMDB sentiment classification dataset. mnist module: MNIST handwritten digits dataset. reuters module: Reuters topic classification dataset. import tensorflow as tf from tensorflow import keras fashion_mnist = keras.datasets.fashion_mnist (x_train, y_train), (x_test, y_test) = fashion_mnist.load_data() mnist = keras.datasets.mnist (x_train, y_train), (x_test, y_test) = mnist.load_data() cifar100 = keras.datasets.cifar100 (x_train, y_train), (x_test, y_test) = cifar100.load_data() cifar10 = keras.datasets.cifar10 (x_train, y_train), (x_test, y_test) = cifar10.load_data() imdb = keras.datasets.imdb (x_train, y_train), (x_test, y_test) = imdb.load_data() # word_index is a dictionary mapping words to an integer index word_index = imdb.get_word_index() # We reverse it, mapping integer indices to words reverse_word_index = dict([(value, key) for (key, value) in word_index.items()]) # We decode the review; note that our indices were offset by 3 # because 0, 1 and 2 are reserved indices for "padding", "start of sequence", and "unknown". decoded_review = ' '.join([reverse_word_index.get(i - 3, '?') for i in x_train[0]]) print(decoded_review) boston_housing = keras.datasets.boston_housing (x_train, y_train), (x_test, y_test) = boston_housing.load_data() reuters= keras.datasets.reuters (x_train, y_train), (x_test, y_test) = reuters.load_data() tf.keras.datasets.reuters.get_word_index( path='reuters_word_index.json' )
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值