Я недавно начал изучать глубокое обучение и CNN.Я наткнулся на следующий код, который определяет простой CNN.
Может кто-нибудь помочь мне понять, как работают эти строки:
loss = layer_output[:, :, :, 0]
- Каков результат этого?Мой вопрос в том, что сеть еще не обучена.Веса [Ядра] еще не рассчитаны.Итак, какие данные он собирается вернуть !!0
представляет первое ядро?
iterate = K.function([input_img], [loss, grads])
- На сайте Keras не так много документации.Я понимаю, что iterate
- это функция, которая принимает входной тензор и возвращает список тензоров, первый из которых loss
, а второй * grads
.Но они определены в другом месте!
Определите входное изображение с этими размерами:
img_data = np.random.uniform(size=(1, 250, 250, 3))
Существует простое CNN, которое имеет один сверточный слой.Он использует два ядра 3 X 3.
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])
Спасибо.