1、Keras版本不同问题

测量lstm准确度python代码_CUDA


这个问题的原因是Keras不同,我们使用的Keras版本过高,而源代码作者的Keras版本低,代码要做些许改变

2、源代码(出处找不到了,网上类似的代码太多了)

# -*- coding:utf-8 -*-
'''
one embedding测试
在GTX960上,36s一轮
经过30轮迭代,训练集准确率为95.95%,测试集准确率为89.55%
Dropout不能用太多,否则信息损失太严重
'''

import numpy as np
import pandas as pd

pos = pd.read_excel('pos.xls', header=None)
pos['label'] = 1
neg = pd.read_excel('neg.xls', header=None)
neg['label'] = 0
all_ = pos.append(neg, ignore_index=True)

maxlen = 200  # 截断字数
min_count = 20  # 出现次数少于该值的字扔掉。这是最简单的降维方法

content = ''.join(all_[0])
abc = pd.Series(list(content)).value_counts()
abc = abc[abc >= min_count]
abc[:] = list(range(1, len(abc) + 1))
abc[''] = 0  # 添加空字符串用来补全
word_set = set(abc.index)


def doc2num(s, maxlen):
    s = [i for i in s if i in word_set]
    s = s[:maxlen] + [''] * max(0, maxlen - len(s))
    return list(abc[s])


all_['doc2num'] = all_[0].apply(lambda s: doc2num(s, maxlen))

# 手动打乱数据
idx = list(range(len(all_)))
np.random.shuffle(idx)
all_ = all_.loc[idx]

# 按keras的输入要求来生成数据
x = np.array(list(all_['doc2num']))
y = np.array(list(all_['label']))
y = y.reshape((-1, 1))  # 调整标签形状

from keras.models import Sequential
from keras.layers import Dense, Activation, Dropout, Embedding
from keras.layers import LSTM

# 建立模型
model = Sequential()
model.add(Embedding(len(abc), 256, input_length=maxlen))
model.add(LSTM(128))
model.add(Dropout(0.5))
model.add(Dense(1))
model.add(Activation('sigmoid'))
model.compile(loss='binary_crossentropy',
              optimizer='adam',
              metrics=['accuracy'])

batch_size = 128
train_num = 15000

model.fit(x[:train_num], y[:train_num], batch_size=batch_size, nb_epoch=30)

model.evaluate(x[train_num:], y[train_num:], batch_size=batch_size)


def predict_one(s):  # 单个句子的预测函数
    s = np.array(doc2num(s, maxlen))
    s = s.reshape((1, s.shape[0]))
    return model.predict_classes(s, verbose=0)[0][0]


print("成功")

3、关于如何安装TensorFlowGPU版本问题,我看了许多博客,这是其中比较能解决问题的。

说明:TensorFlow有两种版本,一种是CPU版本,另一种是GPU。由于训练要花较长时间需要用GPU版本。安装GPU版本需要额外下载CUDA软件(1.3个G),CUDAA,这是个文件,100多M。要特别注意下载对应的版本,我用的TensorFlow-GPU 1.4.0,对应的CUDA是8.0,CUDAA是6.0,下载渠道这个博客中有。(cudaa下载需要注册,老麻烦了)https://developer.nvidia.com/rdp/cudnn-archive 访问这个链接直接下载。

4、其他问题
总是提示:Could not find 'cudnn64_6.dll等类似的错误,这有两种可能的原因。
一种是环境变量没有配置好。方法:将C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\bin添加到系统环境变量的Path中去,即CUDA的bin目录所在位置,一般都是这个位置。不一样改一下即可。配置好环境变量一定要重新启动电脑,让环境变量生效,我就是没有重新启动导致总是出错。
另一种原因就是,缺少这个东西,再把CUDAA文件下载就好了,下载时候看他报的错,如果是cudnn64_6.dll就下载CUDAA6.0,其他类似。
还有好多地方可能会出现错误,我忘记了,也没有截屏,有啥其他问题再给我说吧!