卷积层过滤器大小如何影响输入长度以及如何使标签保持相同大小

问题描述 投票:0回答:1

假设我们在tensorflow.keras中有一维卷积层,输入大小为100(为简单起见,忽略批处理和通道大小),内核大小为51(实际上,可以通过在多层中应用较小的过滤器来实现)我们要使输出的长度与输入的长度相同(padding = same)。我想知道应用该过滤器后将用零填充哪些索引,它是最右边的50个还是最左边的50个或每边25个。另外,如果我每个元素都有一个标签,那么将标签的数量减少到50个以最好地表示输入的最佳方法是什么。

tensorflow keras conv-neural-network convolution
1个回答
1
投票
填充是两面的,在应用卷积之前,您可以通过此将卷积的卷积代码轻松地看到这一点。 (预期结果是中心的内核大小)

import numpy as np from keras.layers import Input, Conv1D from keras.models import Model length = 100 filt = 51 ins = Input((length,1)) outs = Conv1D(1, filt, padding='same', kernel_initializer='ones', use_bias=False)(ins) model = Model(ins, outs) preds = model.predict(np.ones((1,length,1)))[0, :, 0] print('result length = ', len(preds)) print(preds)

输出:

result length = 100 [26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 51. 51. 51. 51. 51. 51. 51. 51. 51. 51. 51. 51. 51. 51. 51. 51. 51. 51. 51. 51. 51. 51. 51. 51. 51. 51. 51. 51. 51. 51. 51. 51. 51. 51. 51. 51. 51. 51. 51. 51. 51. 51. 51. 51. 51. 51. 51. 51. 51. 50. 49. 48. 47. 46. 45. 44. 43. 42. 41. 40. 39. 38. 37. 36. 35. 34. 33. 32. 31. 30. 29. 28. 27. 26.]

注意它如何逐渐减小到边界。随着过滤器的滑动,这些数字的数量在增加。


对最后一个问题没有明确的答案。这取决于您需要做什么。“最佳代表”是什么意思?您可以使用Dense(50),可以吗?这取决于您想要什么。您可以将100调整为50x2,并采用新轴的平均值。...确实有很多解决方案,每个解决方案都有其自己的属性。
© www.soinside.com 2019 - 2024. All rights reserved.