【发布时间】:2019-06-26 01:44:29
【问题描述】:
我基本上有一个带有几层的 keras CNN,我想评估一个输入,然后获得反向传播算法的梯度。模型已建立并编译。但我只希望第一次只在一个输入/输出集上运行反向传播,我不关心其他任何事情。
这是我的代码的相关部分:
# Build the model.
model = Sequential()
model.add(Conv2D(16, kernel_size=(3, 3), activation='relu', input_shape=input_shape))
model.add(Conv2D(32, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Flatten())
model.add(Dense(32, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(digits, activation='softmax'))
# Prepare the model for training.
model.compile(loss = keras.losses.categorical_crossentropy,
optimizer = keras.optimizers.Adadelta(),
metrics=['accuracy'])
而我的一组数据输入输出在x_train和y_train中。那么我究竟如何运行一组数据并根据预期的输出运行反向传播,然后实际得到 keras 计算的梯度?
编辑:本质上,这是一项学术努力,我想做的是自己计算渐变的值,然后将这些值与 keras 得到的值进行比较。那么如何获得这些值呢?
【问题讨论】:
标签: python tensorflow keras neural-network backpropagation