我最近开始学习深度学习和CNN。我遇到了下面的代码,它定义了一个简单的CNN。
有谁能帮助我理解这些行是如何工作的:
loss = layer_output[:, :, :, 0]
-结果是什么?我的问题是,网络还没有经过训练。权重内核尚未计算。那么,它将返回什么样的数据呢!Keras是否代表了第一个内核?iterate = K.function([input_img], [loss, grads])
--在0
网站上没有太多的文档。我所理解的是,iterate
是一个函数,它接受一个输入张量,并返回一个张量列表,第一个是loss
,第二个是grads
。但是,它们是在其他地方定义的!!使用以下尺寸定义输入图像:
img_data = np.random.uniform(size=(1, 250, 250, 3))
这里有一个简单的CNN,它有一个卷积层。它使用两个3X3内核。
input = Input(shape=250, 250, 3,), name='input_1')
First_Conv2D = Conv2D(2, kernel_size=(3, 3), padding="same", name='conv2d_1', activation='relu')(input)
flat = Flatten(name='flatten_1')(First_Conv2D)
output = Dense(2, name='dense_1', activation='softmax')(flat)
model = Model(inputs=[input], outputs=[output])
layer_dict = dict([(layer.name, layer) for layer in model.layers[0:]])
layer_output = layer_dict['conv2d_1'].output
input_img = model.input
# Calculate loss and gradient.
loss = layer_output[:, :, :, 0]
grads = K.gradients(loss, input_img)[0]
# Define a Keras function
iterate = K.function([input_img], [loss, grads])
# Call iterate function
loss_value, grads_value = iterate([img_data])
谢谢。
https://stackoverflow.com/questions/50766143
复制相似问题