Индекс 466 ошибки Tensorflow tflearn выходит за пределы для оси 0 с размером 129 - PullRequest
0 голосов
/ 31 октября 2018

У меня есть приложение, которое тренируется с фрагментом изображения спектрограммы 128x128, и когда я пытаюсь тренировать model с model.fit(train_x,train_y,..), я получаю эту ошибку

строка 187, в slice_array вернуть X [start]

IndexError: индекс 234 выходит за пределы оси 0 с размером 127

Я посмотрел онлайн для ответа и попытался добавить reset_default_graph(), np.array или даже установить снова tflearn без работы. Заранее спасибо.

Основной код:

Настройки

slicesPath = "Spectogram/Style"
filesPerGenre = 2000
sliceSize = 128
validationRatio = 0.3
testRatio = 0.1
batchSize = 128
learningRate = 0.001
nbEpoch = 20
pixelPerSecond = 50

Создать модель

Model = model.create_model(nbClasses, sliceSize)

Создание или загрузка нового набора данных

train_X, train_Y, validation_X, validation_y = 
dataSet.getDataset(filesPerGenre, genres, sliceSize, validationRatio, 
testRatio, mode="train")

#Define run id for graphs
run_id = "MusicGenres - "+str(batchSize)+" 
"+''.join(random.SystemRandom().choice(string.ascii_uppercase) for _ in 
range(10))

#Train the model
print("[+] Training the model...")
Model.fit(train_X, train_Y, n_epoch=nbEpoch, batch_size=batchSize, 
shuffle=True, validation_set=(validation_X, validation_y), 
snapshot_step=100, show_metric=True, run_id=run_id)
print("Model trained! ✅")

#Save trained model
print("[+] Saving the weights...")
Model.save('musicDNN.tflearn')
print("[+] Weights saved! ✅?")

Модель функции

def create_model(nbClasses,imageSize):
print("[+] Creating model...")
convnet = input_data(shape=[None, imageSize, imageSize, 1], name='input')

convnet = conv_2d(convnet, 64, 2, activation='elu', weights_init="Xavier")
convnet = max_pool_2d(convnet, 2)

convnet = conv_2d(convnet, 128, 2, activation='elu', weights_init="Xavier")
convnet = max_pool_2d(convnet, 2)

convnet = conv_2d(convnet, 256, 2, activation='elu', weights_init="Xavier")
convnet = max_pool_2d(convnet, 2)

convnet = conv_2d(convnet, 512, 2, activation='elu', weights_init="Xavier")
convnet = max_pool_2d(convnet, 2)

convnet = fully_connected(convnet, 1024, activation='elu')
convnet = dropout(convnet, 0.5)

convnet = fully_connected(convnet, nbClasses, activation='softmax')
convnet = regression(convnet, optimizer='rmsprop', 
loss='categorical_crossentropy')

model = tflearn.DNN(convnet)
print("    Model created! ✅")
return model

Код набора данных:

shuffle(data)

# Extract X and y
X, y = zip(*data)

# Split data
validationNb = int(len(X) * validationRatio)
testNb = int(len(X) * testRatio)
trainNb = len(X) - (validationNb + testNb)
print(trainNb)

# Prepare for Tflearn at the same time
train_X = np.array(X[:trainNb]).reshape([-1, sliceSize, sliceSize, 1])
train_y = np.array(y[:trainNb])
validation_X = np.array(X[trainNb:trainNb + validationNb]).reshape([-1, 
sliceSize, sliceSize, 1])
validation_y = np.array(y[trainNb:trainNb + validationNb])
test_X = np.array(X[-testNb:]).reshape([-1, sliceSize, sliceSize, 1])
test_y = np.array(y[-testNb:])
print("    Dataset created! ✅")

# Save
saveDataset(train_X, train_y, validation_X, validation_y, test_X, test_y, 
nbPerGenre, genres, sliceSize)

return train_X, train_y, validation_X, validation_y, test_X, test_y
...