【问题标题】:What does 4d tensor mean in Tensorflow?Tensorflow 中的 4d 张量是什么意思?
【发布时间】:2023-03-19 00:44:01
【问题描述】:

我需要沿固定大小的文本行执行卷积。所以本质上,一个训练示例的形式是:1*N_FEATURES 其中N_FEATURES 等于 3640(140 个字符编码为 one-hot,所以 40*26=3640)。我试图理解示例here,确切地说:

def my_conv_model(X, y):
   X = tf.reshape(X, [-1, N_FEATURES, 1, 1])  # to form a 4d tensor of shape batch_size x n_features x 1 x 1
   features = skflow.ops.conv2d(X, N_FILTERS, [WINDOW_SIZE, 1], padding='VALID') # this will give you sliding window of WINDOW_SIZE x 1 convolution.
   pool = tf.squeeze(tf.reduce_max(features, 1), squeeze_dims=[1])
   return return skflow.models.logistic_regression(pool, y)

我不明白为什么在这行:

 features = skflow.ops.conv2d(X, N_FILTERS, [WINDOW_SIZE, 1], padding='VALID') 

我们有:[WINDOW_SIZE, 1] 而不是[1, WINDOW_SIZE]? 据我了解,卷积应按以下方式执行:

training example: '001010101000100101'
sliding window:   |---|
                   |---|
                    |---| 

以此类推,每个大小为 [1, WINDOW_SIZE] 的窗口,因为它的高度为 1,宽度为 3。但是为什么给出的示例显示“features = skflow.ops.conv2d(X, N_FILTERS, [WINDOW_SIZE, 1], padding='VALID')”?

【问题讨论】:

    标签: machine-learning tensorflow convolution


    【解决方案1】:

    4-D 张量正是它所表示的:具有四个维度(下标、特征、...)的张量。

    一维滑动窗口的符号是一种符号约定。为方便起见,我们将重要维度放在首位,并将 1 大小保留在最后。因此,一个 3 宽的切片(1-D 窗口)被指定为一个 3x1 窗口。

    【讨论】:

    • “扩展”形式的 3 宽 1 高的形状是否正确 [1, 1, 3, 1] ?另外,您如何确定哪个维度是重要的?
    • 是的,[1, 1, 3, 1] 是我阅读 API 的方式。 “重要”并不是一个真正的技术术语:它包含我们感兴趣的信息。任何限制为 1 的维度都只是一个占位符。类似地,彩色图像在某个地方的“无关紧要”维度为 3,即 RGB 分量。
    猜你喜欢
    • 2018-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多