我感到惊讶的是,我实施的深度学习算法无法正常工作,因此我决定创建一个非常简单的示例,以更好地了解CNN的功能。这是我为一个非常简单的任务构造一个小的CNN的尝试,它提供了意外的结果。
我实现了一个仅带有一层滤镜的简单CNN。我创建了一个包含5000个样本的数据集,输入x是256x256仿真图像,输出y是相应的模糊图像(y = signal.convolvded2d(x,gaussian_kernel,boundary ='fill',mode ='same')) 。因此,我希望CNN学习卷积滤波器,它将原始图像转换为模糊图像。换句话说,我希望CNN恢复用于创建模糊图像的高斯滤波器。注意:由于我想“模仿”数学框架中描述的卷积过程,因此我使用的高斯滤波器的大小与我的图像相同:256x256。
在我看来,这是一项非常容易的任务,但是,CNN无法提供我期望的结果。请在下面找到我训练功能的代码和结果。
# Parameters
size_image = 256
normalization = 1
sigma = 7
n_train = 4900
ind_samples_training =np.linspace(1, n_train, n_train).astype(int)
nb_epochs = 5
minibatch_size = 5
learning_rate = np.logspace(-3,-5,nb_epochs)
tf.reset_default_graph()
tf.set_random_seed(1)
seed = 3
n_train = len(ind_samples_training)
costs = []
# Create Placeholders of the correct shape
X = tf.placeholder(tf.float64, shape=(None, size_image, size_image, 1), name = 'X')
Y_blur_true = tf.placeholder(tf.float64, shape=(None, size_image, size_image, 1), name = 'Y_true')
learning_rate_placeholder = tf.placeholder(tf.float32, shape=[])
# parameters to …Run Code Online (Sandbox Code Playgroud)