keras,模型(数据)的含义是什么
keras, what is the meaning of model(data)
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)"是干什么用的?
"model" 这里是Class sequential 的变量,我没见过这样的用法。
此代码取自## Copyright (C) 2016, Nicholas Carlini
问得好,这取决于 data
是什么,但肯定是代码片段 具有误导性 。澄清一下:
- 如果你直接调用模型你需要传递张量,它就像另一层。
model(anotherlayer)
例如有效。但是,如果您传递实际数据(例如 NumPy 错误),则会出现此错误:
ValueError: Layer sequential_1 was called with an input that isn't a symbolic tensor. Received type: . Full input: [array(...)]. All inputs to the layer should be tensors.
- 如果你想预测,比如传递一些数字数据和 运行 网络/传播值/计算输出,那么你需要
model.predict(data)
这就是为什么它会产生误导,因为它是预测功能。
我的猜测是作者需要将模型链接在一起并编辑 class 的 predict
函数,而不是创建不同的 class 函数。
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)"是干什么用的? "model" 这里是Class sequential 的变量,我没见过这样的用法。 此代码取自## Copyright (C) 2016, Nicholas Carlini
问得好,这取决于 data
是什么,但肯定是代码片段 具有误导性 。澄清一下:
- 如果你直接调用模型你需要传递张量,它就像另一层。
model(anotherlayer)
例如有效。但是,如果您传递实际数据(例如 NumPy 错误),则会出现此错误:ValueError: Layer sequential_1 was called with an input that isn't a symbolic tensor. Received type: . Full input: [array(...)]. All inputs to the layer should be tensors.
- 如果你想预测,比如传递一些数字数据和 运行 网络/传播值/计算输出,那么你需要
model.predict(data)
这就是为什么它会产生误导,因为它是预测功能。
我的猜测是作者需要将模型链接在一起并编辑 class 的 predict
函数,而不是创建不同的 class 函数。