class MNISTModel:
def __init__(self, restore, session=None):
self.num_channels = 1
self.image_size = 28
self.num_labels = 10
model = Sequential()
model.add(Conv2D(32, (3, 3),
input_shape=(28, 28, 1)))
model.add(Activation('relu'))
model.add(Conv2D(32, (3, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Conv2D(64, (3, 3)))
model.add(Activation('relu'))
model.add(Conv2D(64, (3, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Flatten())
model.add(Dense(200))
model.add(Activation('relu'))
model.add(Dense(200))
model.add(Activation('relu'))
model.add(Dense(10))
model.load_weights(restore)
self.model = model
print('selfMNIST')
def predict(self, data):
tmp=self.model(data) #Question is here
return tmp
Что это за предложение "tmp = self.model(data)" for? "model" здесь - это переменная класса Classial, я никогда не вижу такого использования. Этот код взят из ## Copyright (C) 2016, Nicholas Carlini
Хороший вопрос, это зависит от того, какие data
, но, конечно, фрагмент кода вводит в заблуждение. Чтобы уточнить:
model(anotherlayer)
. Но если вы передадите фактические данные, такие как ошибка NumPy, это даст следующую ошибку: ValueError: Layer sequential_1 вызывается с входом, который не является символическим тензором. Полученный тип:. Полный ввод: [массив (...)]. Все входы слоя должны быть тензорами.
model.predict(data)
поэтому он вводит в заблуждение, поскольку это функция прогнозирования. Я предполагаю, что автору необходимо объединить модели вместе и отредактировать функцию predict
класса вместо создания другой функции класса.