#python #list #loops
#python #Список #циклы
Вопрос:
Я создаю искусственный интеллект для распознавания изображений с нуля, и предполагается, что следующий блок кода хранит значение нейрона, когда он устанавливает новый высокий балл, но, похоже, он всегда это делает, или, по крайней мере, я могу сказать, что он определенно не работает. Вот код:
for x in range(numberOfNeurons):
for y in range(neuronTryNumber):
neurons[x] = bestNeurons[x]
trainingSample = random.randint(0, (len(images) - 1)) # Choose a random image in the sample file
weights[x] = random.uniform(0.75, 1.25)
neurons[x] = weights[x] * neurons[x] # Modify a single neuron
if float(arrayOfImages[trainingSample][x]) == 0.0 == float(neurons[x]) * float(arrayOfImages[trainingSample][x]):
dataGapArray[y] = 1.0
elif float(arrayOfImages[trainingSample][x]) > float(neurons[x]):
dataGapArray[y] = float(neurons[y]) / float(arrayOfImages[trainingSample][x])
elif float(arrayOfImages[trainingSample][x]) < float(neurons[x]):
dataGapArray[y] = float(arrayOfImages[trainingSample][x]) / float(neurons[x])
totalScore = (sum(dataGapArray) / numberOfNeurons)
# print("Current score:", totalScore)
if totalScore > bestScore:
print("New Best Score!:", totalScore)
bestNeurons[x] = neurons[x]
totalScore = bestScore
Теперь я обычно должен видеть постоянно увеличивающийся новый высокий балл, указывающий на то, что код работоспособен, однако иногда я вижу снижение высоких баллов. Вот пример:
New Best Score!: 0.7317308239784488
New Best Score!: 0.732005727847736
New Best Score!: 0.7315127892353739
New Best Score!: 0.7315127892353739
New Best Score!: 0.7249716540133387
Комментарии:
1. Если вы используете операторы печати для отладки, возможно, добавьте старый лучший результат перед его назначением? Т.е.
print("New Best Score!:", totalScore, ': Old Best Score:', bestScore)
. Таким образом, вы можете увидеть, был лиbestScore
изменен. Если он был изменен, вам нужно выяснить, где это происходит.
Ответ №1:
Я думаю, вам нужно обновить лучший результат вместо общего результата в последней строке.
bestScore = totalScore
Ответ №2:
Не видя всего кода, я предполагаю решение. Последняя строка должна быть
bestScore = totalScore
Не уверен, что это сработает, но стоит попробовать