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)”这句话是干什么的? “模型”在这里是Class顺序变量,我从未见过这样的用法。 该代码取自##版权所有(C)2016,尼古拉斯·卡里尼
答案 0 :(得分:0)
很好的问题,这取决于data
是什么,但是代码片段肯定会误导我们。要澄清:
model(anotherlayer)
。但是,如果您传递实际数据(例如NumPy错误),则会出现此错误:
ValueError:调用了不是符号张量的输入来调用了sequence serial_1。收到的类型:。全部输入:[array(...)]。该层的所有输入都应为张量。
model.predict(data)
,这就是为什么它具有预测功能,因此会产生误导的原因。我的猜测是,作者需要将模型链接在一起并编辑类的predict
函数,而不是创建其他类函数。