Объект метода не является подписным в коде нейронных сетей - PullRequest
0 голосов
/ 02 февраля 2020

Я начал изучать ML и нейронные сети для некоторого проекта колледжа, изучая, что я столкнулся с проблемой в коде, которую я не могу исправить.

import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
from tensorflow import keras 

data = keras.datasets.fashion_mnist

(train_images,train_labels),(test_images,test_labels) = data.load_data()

class_names = ['T-shirt/top', 'Trouser', 'Pullover', 'Dress', 'Coat', 'sandal', 'Shirt', 'sneaker', 
'Bag', 'Ankle boot']

train_images = train_images/255.0
test_images = test_images/255.0

model = keras.Sequential([
keras.layers.Flatten(input_shape=(28,28)),
keras.layers.Dense(128, activation="relu"),
keras.layers.Dense(10, activation="softmax")
 ])

model.compile(optimizer="adam", loss="sparse_categorical_crossentropy", metrics=["accuracy"])

model.fit(train_images, train_labels, epochs=5)

test_loss, test_acc = model.evaluate(test_images, test_labels)

prediction = model.predict

print(class_names[np.argmax(prediction[4])])

Я получаю ошибку:

TypeError: объект 'method' недопустим.

Ответы [ 2 ]

1 голос
/ 02 февраля 2020

model.predict - это метод класса model, поэтому вы должны вызывать его как функцию. См. Документацию TF здесь: https://www.tensorflow.org/api_docs/python/tf/keras/Model#predict

Таким образом, в вашем случае вы должны предоставить данные, по которым модель должна генерировать прогнозы, например, model.predict(test_images).

С model.predict вы просто ссылаетесь на метод класса, в который вы пытаетесь индексировать [4], отсюда и сообщение об ошибке.

0 голосов
/ 02 февраля 2020

Вы должны вызвать метод предсказания для чего-то: например, model.predict (x), где x - это некоторый ввод, который вы хотите предсказать. Например, вызов предсказания = model.predict (test_images) должен работать. Затем вы можете выбрать прогноз, например, np.argmax (прогнозы [4])

...