что означает [1] в model.evaluate (X, Y) [1] - PullRequest
0 голосов
/ 05 мая 2020

Следующие коды взяты из учебника под названием «Углубленное обучение для всех» и предназначены для прогнозирования диабета на основе данных индейцев пима. Интересно, что означает [1] в конце кодов.

from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
import numpy
import tensorflow as tf

np.random.seed(3)
tf.random.set_seed(3)

dataset = np.loadtxt('.\dataset\pima-indians-diabetes.csv', delimiter=',')

X = dataset[:, 0:8]
Y = dataset[:, 8]

model = Sequential()
model.add(Dense(12, input_dim=8, activation='relu'))
model.add(Dense(8, activation='relu'))
model.add(Dense(1, activation='sigmoid'))

model.compile(loss='binary_crossentropy',
              optimizer='adam',
              metrics=['accuracy'])

model.fit(X, Y, epochs=200, batch_size=10)

print('\n Accuracy: %.4f' % (model.evaluate(X, Y)[1]))    # <---------

1 Ответ

0 голосов
/ 05 мая 2020

В Keras model.evaluate() возвращает список агрегированных значений метри c. Допустим, вы хотите измерить потери, точность, оценку F1 на ваших тестовых данных, тогда вы бы compile свою модель могли бы примерно так: model.compile(optimizer, loss, metrics=['accuracy', custom_f1_function], .. ). Затем они будут рассчитаны для каждой выборки (или партии) в наборе данных и затем уменьшены, как правило, путем взятия среднего значения. В итоге вы получите список из трех элементов: совокупный убыток, совокупная точность, совокупный балл F1. В вашем коде вы обращаетесь ко второму элементу этого списка, а именно к точности.

(Порядок в `metrics = [..] определяет порядок в списке вывода!)

...