假设我们有一个单一频道图像(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情况非常有帮助.
我对 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 应用到 form1 并应用具有大小为 (3,3) 的 M 滤波器的 conv2d
\n\n它们的功能操作基本相同吗?我认为这两种形式在时间和空间维度上交织在一起。
\n\n如果有人能帮助我解决这个问题,我真的很感激。
\n这个问题的目的是寻求一个最低限度的指南,让某人快速了解 TensorFlow 1 和 TensorFlow 2。我觉得没有一个连贯的指南来解释 TF1 和 TF2 之间的差异,并且 TF 已经通过了专业修订和快速发展。
我说的时候供参考,
我的问题是,
TF1/TF2 如何工作?它们的主要区别是什么?
TF1 和 TF2 中有哪些不同的数据类型/数据结构?
什么是 Keras,它如何适应所有这些?Keras 提供了哪些不同的 API 来实现深度学习模型?你能提供每个例子吗?
在使用 TF 和 Keras 时,我必须注意的最经常出现的警告/错误是什么?
TF1 和 TF2 之间的性能差异
我有 2 个时间序列的数据,每个序列 18 点。所以我组织了一个 18 行 2 列的矩阵(180 个样本分为 2 个类别 - 激活和非激活)。
所以,我想用这些数据做一个 CNN,我的内核沿着线(时间)朝一个方向走。附图示例。
在我的代码中,与具有 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) 我正在使用 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) 我第一次构建用于图像分类的 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 模型时,我收到以下错误: …
我注意到在keras文档中有许多不同类型的Conv层,即Conv1D, Conv2D, Conv3D.
它们都具有其他层中不存在的参数,例如filters、kernel_size、strides和。paddingkeras
我见过像这样“可视化”Conv图层的图像,
但我不明白从一层过渡到下一层的过程中发生了什么。
改变上述参数和我们Conv层的维度如何影响模型中发生的事情?
python ×6
keras ×4
tensorflow ×3
convolution ×2
cnn ×1
dot-product ×1
input ×1
max-pooling ×1
pytorch ×1
rgb ×1