Недавно я начал тестировать набор данных обзора фильмов IMDB, пытался использовать свои коды, но, к сожалению, я получил и такую ошибку, как:
TypeError: Value passed to parameter 'indices' has DataType float32 not in list of allowed values: int32, int64
Я скачал свой набор данных с https://www.kaggle.com/utathya/imdb-review-dataset/version/1#.
Мои коды следующие:
import numpy as np
import tensorflow as tf
from os import listdir
from os.path import isfile, join
import csv
import matplotlib.pyplot as plt
import re
tf.reset_default_graph()
wordsList = open('glove.6B.50d.txt', "r", encoding="utf-8").read().splitlines()
print('Loaded the word list!')
NewwordsList = [word.split()[0] for word in wordsList]
NewwordsVector = [vector.split()[1:] for vector in wordsList]
NewwordsVector = np.asarray(NewwordsVector)
#print(len(NewwordsList))
#print(NewwordsVector.shape)
f = open("imdb_master.csv", "r", encoding="utf8", errors="replace")
csvfiles = csv.reader(f)
numWords = []
positiveFiles = []
negativeFiles = []
for file in csvfiles:
if file[3] in "pos":
numWords.append(len(file[2].split()))
positiveFiles.append(file[2])
if file[3] in "neg":
numWords.append(len(file[2].split()))
negativeFiles.append(file[2])
numFiles = len(numWords)
strip_special_chars = re.compile("[^A-Za-z0-9 ]+")
def cleanSentences(string):
string = string.lower().replace("<br />", " ")
return re.sub(strip_special_chars, "", string.lower())
maxSeqLength = 250
totalFiles = np.zeros((numFiles,maxSeqLength), dtype="int32")
fileCounter = 0
for pf in positiveFiles[0:4]:
indexCounter = 0
cleanedLine = cleanSentences(pf)
split = cleanedLine.split()
for word in split:
try:
totalFiles[fileCounter][indexCounter] = NewwordsList.index(word)
except ValueError:
totalFiles[fileCounter][indexCounter] = 399999
indexCounter = indexCounter + 1
if indexCounter >= maxSeqLength:
break
fileCounter = fileCounter + 1
for nf in negativeFiles[0:4]:
indexCounter = 0
cleanedLine = cleanSentences(nf)
split = cleanedLine.split()
for word in split:
try:
totalFiles[fileCounter][indexCounter] = NewwordsList.index(word)
except ValueError:
totalFiles[fileCounter][indexCounter] = 399999
indexCounter = indexCounter + 1
if indexCounter >= maxSeqLength:
break
fileCounter = fileCounter + 1
#Here we define our model for Tensorflow
batchSize = 24
lstmUnits = 64
numClasses = 2
iterations = 100000
maxDimensionLength = 300
#Placeholders for both input to network and labels
input_data = tf.placeholder(tf.float32,[batchSize, maxSeqLength])
labels = tf.placeholder(tf.float32,[batchSize,numClasses])
data = tf.Variable(tf.zeros([batchSize, maxSeqLength, maxDimensionLength]),dtype=tf.float32)
data = tf.nn.embedding_lookup(NewwordsVector,input_data)
Я пытаюсь понять модель RNN, поэтому я пытаюсь построить эту модель, используя загруженные наборы данных. Я следую довольно много указаний на сайте, но не полезно.
Мои коды работают следующим образом:
1) Я загружаю метрики word2vec из перчатки (https://nlp.stanford.edu/projects/glove/). - файл, который я использовал, - это Wikipedia 2014 + Gigaword 5 (токены 6B, вокабл 400K, uncased, векторы 50d, 100d, 200d и 300d, 822) MB скачать): glove.6B.zip.
2) Затем я разбил его на список слов, а также список векторов.
3) Затем я загружаю наборы данных для IMDB и составляю список положительных и отрицательных классов для целей анализа настроений.
4) Позже я заменяю все скобки и ненужные символы.
5) Затем я нахожу индекс для каждого предложения на положительном и отрицательном и строю вектор для каждого из них.
6) Моя переменная "totalFiles" содержит список векторов как для положительного, так и для отрицательного просмотра предложений из набора данных IMDB.
7) После получения моего вектора моя «ПРОБЛЕМА» началась здесь, я пытаюсь использовать tf.nn.embedding_lookup (vector_argument, input_argument), чтобы отобразить мой индекс в списке векторов (очевидно, мой вектор содержит индекс каждого слова в предложениях, основанных на векторах Glove) ....... tf.nn.embedding_lookup помогает сопоставить индекс с векторами в Glove.
Здесь мои проблемы начинаются со строки 93. С 1-92 все правильно, кроме 93. Когда я использовал tf.nn.embedding_lookup (), это дало мне ошибку. Кто-нибудь может указать, что не так с моими кодами? Пожалуйста и заранее спасибо