相关疑难解决方法(0)

如何用RGB通道完成卷积?

假设我们有一个单一频道图像(5x5)

A = [ 1 2 3 4 5
      6 7 8 9 2
      1 4 5 6 3
      4 5 6 7 4
      3 4 5 6 2 ]
Run Code Online (Sandbox Code Playgroud)

和过滤器K(2x2)

K = [ 1 1
      1 1 ]
Run Code Online (Sandbox Code Playgroud)

应用卷积的一个例子(让我们从A中取出第一个2x2)将是

1*1 + 2*1 + 6*1 + 7*1 = 16
Run Code Online (Sandbox Code Playgroud)

这非常简单.但是,让我们向矩阵A引入深度因子,即在深度网络中具有3个通道或甚至转换层的RGB图像(深度= 512).如何使用相同的滤波器完成卷积运算?类似的工作对于RGB情况非常有帮助.

rgb convolution matrix-multiplication dot-product

14
推荐指数
3
解决办法
1万
查看次数

Conv3d 与 Conv2d 之间的区别

我对 conv2d 和 conv3d 函数之间的区别有点困惑。\n例如,如果我有一堆 N 个图像,高高宽宽,有 3 个 RGB 通道。网络的输入可以是两种形式\nform1: (batch_size, N, H, W, 3) 这是一个 5 阶张量\nform2: (batch_size, H, W, 3N ) 这是一个 4 阶张量

\n\n

问题是\xef\xbc\x8c 如果我将具有大小为 (N,3,3) 的 M 滤波器的 conv3d 应用到 f​​orm1 并应用具有大小为 (3,3) 的 M 滤波器的 conv2d

\n\n

它们的功能操作基本相同吗?我认为这两种形式在时间和空间维度上交织在一起。

\n\n

如果有人能帮助我解决这个问题,我真的很感激。

\n

python convolution neural-network deep-learning tensorflow

6
推荐指数
1
解决办法
2万
查看次数

TensorFlow 和 Keras 入门:过去 (TF1) 现在 (TF2)

这个问题的目的是寻求一个最低限度的指南,让某人快速了解 TensorFlow 1 和 TensorFlow 2。我觉得没有一个连贯的指南来解释 TF1 和 TF2 之间的差异,并且 TF 已经通过了专业修订和快速发展。

我说的时候供参考,

  • v1 或 TF1 - 我指的是 TF 1.15.0
  • v2 或 TF2 - 我指的是 TF 2.0.0

我的问题是,

  • TF1/TF2 如何工作?它们的主要区别是什么?

  • TF1 和 TF2 中有哪些不同的数据类型/数据结构?

  • 什么是 Keras,它如何适应所有这些?Keras 提供了哪些不同的 API 来实现深度学习模型?你能提供每个例子吗?

  • 在使用 TF 和 Keras 时,我必须注意的最经常出现的警告/错误是什么?

  • TF1 和 TF2 之间的性能差异

python machine-learning keras tensorflow tensorflow2.0

6
推荐指数
1
解决办法
1889
查看次数

我不明白 conv1d、conv2d 的 pytorch 输入大小

我有 2 个时间序列的数据,每个序列 18 点。所以我组织了一个 18 行 2 列的矩阵(180 个样本分为 2 个类别 - 激活和非激活)。

所以,我想用这些数据做一个 CNN,我的内核沿着线(时间)朝一个方向走。附图示例。

我的数据 18x2

在我的代码中,与具有 3 个通道的 RGB 相比,我不知道我的通道如何。并且不知道层的输入大小,以及如何计算才能知道全连接层。

我需要使用 conv1d 吗?conv2d?conv3d ? 基于理解 conv 1D 2D 3D,我有 2D 输入,我想做 1D 卷积(因为我在一个方向上移动我的内核),这是正确的吗?

例如,我如何传递内核大小(3,2)?

我的数据是这种形式,使用 DataLoader 和 batch_size= 4 后:

print(data.shape, label.shape)
Run Code Online (Sandbox Code Playgroud)

火炬大小([4, 2, 18]) 火炬大小([4, 1])

我的卷积模型是:

OBS:我只是放了任意数量的输入/输出大小。

# Creating our CNN Model -> 1D convolutional with 2D input (HbO, HbR)

class ConvModel(nn.Module):
    def __init__(self):
        super(ConvModel, self).__init__()
        self.conv1 = nn.Conv1d(in_channels=1,  out_channels= 18, kernel_size=3, stride …
Run Code Online (Sandbox Code Playgroud)

python input conv-neural-network pytorch cnn

5
推荐指数
1
解决办法
7478
查看次数

使用 tf.data 和 mode.fit 时 1DConv 输入的维度错误

我正在使用 TensorFlow 2.0.0 并尝试使用 tf.data.Dataset.from_generator() 创建我自己的数据集

这是我的代码:

def trainDatagen():
    for npy in train_list:
        x = tf.convert_to_tensor(np.load(npy), dtype=tf.float32)
        if npy in gbmlist:
             y = to_categorical(0, num_classes=2)
        else:
             y = to_categorical(1, num_classes=2)
        yield x, y

def tfDatasetGen(datagen, output_types, is_training, batch_size):
    dataset = tf.data.Dataset.from_generator(generator=datagen, output_types=output_types)
    if is_training:
        dataset.shuffle(buffer_size=100)
    dataset.repeat()
    dataset.batch(batch_size=batch_size)
    dataset.prefetch(buffer_size=tf.data.experimental.AUTOTUNE)
    return dataset

train_set = tfDatasetGen(
    datagen = trainDatagen, 
    output_types = (tf.float32, tf.float32), 
    is_training = True, 
    batch_size = 16)
Run Code Online (Sandbox Code Playgroud)

所有这些 npy 文件都是形状为 [4000,2048] 的 np.array 从具有 4000 个切片的大型病理切片中获得。每个瓦片的特征由 ResNet50 计算。

这是我的模型:

def top_k(inputs, …
Run Code Online (Sandbox Code Playgroud)

python neural-network deep-learning keras tensorflow

5
推荐指数
1
解决办法
95
查看次数

1D CNN、2D CNN 和 3D CNN 输入形状之间的差异

我第一次构建用于图像分类的 CNN 模型,我对每种类型(1D CNN、2D CNN、3D CNN)的输入形状以及如何固定滤波器中的滤波器数量感到有点困惑。卷积层。我的数据是 100x100x30,其中 30 是特征。这是我使用函数式 API Keras 编写的 1D CNN 文章:

def create_CNN1D_model(pool_type='max',conv_activation='relu'):
    input_layer = (30,1)
    conv_layer1 = Conv1D(filters=16, kernel_size=3, activation=conv_activation)(input_layer)
    max_pooling_layer1 = MaxPooling1D(pool_size=2)(conv_layer1)

    conv_layer2 = Conv1D(filters=32, kernel_size=3, activation=conv_activation)(max_pooling_layer1)
    max_pooling_layer2 = MaxPooling1D(pool_size=2)(conv_layer2)

    flatten_layer = Flatten()(max_pooling_layer2)
    dense_layer = Dense(units=64, activation='relu')(flatten_layer)

    output_layer = Dense(units=10, activation='softmax')(dense_layer)
    CNN_model = Model(inputs=input_layer, outputs=output_layer)
    return CNN_model
CNN1D = create_CNN1D_model()
CNN1D.compile(loss = 'categorical_crossentropy', optimizer = "adam",metrics = ['accuracy'])
Trace = CNN1D.fit(X, y, epochs=50, batch_size=100)
Run Code Online (Sandbox Code Playgroud)

然而,在尝试通过将 Conv1D、Maxpooling1D 更改为 Conv2D 和 Maxpooling2D 来尝试 2D CNN 模型时,我收到以下错误: …

python conv-neural-network keras max-pooling functional-api

3
推荐指数
1
解决办法
6860
查看次数

卷积层 (CNN) 在 keras 中如何工作?

我注意到在keras文档中有许多不同类型的Conv层,即Conv1D, Conv2D, Conv3D.

它们都具有其他层中不存在的参数,例如filterskernel_sizestrides和。paddingkeras

我见过像这样“可视化”Conv图层的图像,

在此处输入图片说明

但我不明白从一层过渡到下一层的过程中发生了什么。

改变上述参数和我们Conv层的维度如何影响模型中发生的事情?

python neural-network conv-neural-network keras

2
推荐指数
1
解决办法
2175
查看次数