如何解决确定具有4-d内核的3-d卷积的权重尺寸
正如标题所述,我正在考虑确定CNN体系结构的适当尺寸。首先,获得数据集的下一个元素:
train_ds = iter(model.train_dataset)
feature,label = next(train_ds)
feature
的尺寸(32,64,4)
对应于批量大小为32,高度为64,长度为64,扩展的批量大小为4(不是通道尺寸)。我初始化4-d内核以传递3-矩阵,因为我不希望扩展的批处理大小复杂。我的意思是在实践中,我希望大小为(1,1)
的2-d内核通过每个64 x 64图像,并对扩展的批处理大小执行相同的操作,而又不将扩展的批处理大小卷在一起。因此,我实际上是对彼此并行的每个图像进行(1,1)
卷积。到目前为止,我已经能够初始化kernel
并像这样输入conv2d
:
kernel = tf.constant(np.ones((1,1,4,4)),dtype=tf.float32)
output = tf.nn.conv2d(feature,kernel,strides=[1,1],padding='SAME')
这样做会产生我的预期输出(32,4)
。但是我绝对不知道如何初始化权重,以便它们与该体系结构一起工作。我有这样的东西:
w_init = tf.random_normal_initializer()
input_dim = (4,4)
w = tf.Variable(
initial_value=w_init(shape=(input_dim),dtype="float32"),trainable=True)
tf.matmul(output,w)
但是我收到的批次尺寸不兼容,因为我不知道input_dim
应该是什么。根据{{3}},我知道应该是(num_filters * filter_size * filter_size * num_channels) + num_filters
之类的东西,但是我很确定这对我的情况不起作用。
解决方法
在修改尺寸权重为(1,1,4,4)
或(num_filters * num_channels * filter_size * filter_size)
时,我能够提出解决方案。如果有人想提供数学或类似的解释,将不胜感激!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。