根据输入形状的计算是不是存在差异? (带有 Tensorflow 的 Python 中的 CNN)

     2023-03-12     25

关键词:

【中文标题】根据输入形状的计算是不是存在差异? (带有 Tensorflow 的 Python 中的 CNN)【英文标题】:Is there a difference in computation according to input shape? (CNN in Python with Tensorflow)根据输入形状的计算是否存在差异? (带有 Tensorflow 的 Python 中的 CNN) 【发布时间】:2019-07-07 03:23:36 【问题描述】:

我正在通过参考论文(Kim, 2014)解决文本分类问题。 然后我发现在下面的两个模型之间,左边的模型(模型 1)比右边的模型(模型 2)花费了大约 2.5 倍的时间。 我认为两个模型的权重参数数量是一样的。 为什么两个模型会有时间差? *两个模型的输入数据内容相同。简单地改变了形状。

我使用了 tf.nn.conv2d。过滤器形状和步幅如下 模型 1:3x9x1x 过滤器数量,步幅 3 模型 2:1x9x3x 过滤器数量,步幅 1 其他的都一样 *在上图中,宽度表示“self.embedding_dim”,高度表示“self.max_length”。

pooled_outputs = []
with tf.name_scope("conv-maxpool-3"):
# Convolution Layer
filter_shape = [3, self.embedding_dim, 1, self.num_filters]
W = tf.Variable(tf.truncated_normal(filter_shape, stddev=0.1), name="W")
b = tf.Variable(tf.constant(0.1, shape=[self.num_filters]), name="b")
conv = tf.nn.conv2d(
    self.embedded_chars_expanded,
    W,
    strides=[1, 1, 3, 1],
    padding="VALID",
    name="conv")
# Apply nonlinearity
h = tf.nn.relu(tf.nn.bias_add(conv, b), name="relu")
# Maxpooling over the outputs
pooled = tf.nn.max_pool(
    h,
    ksize=[1, self.max_length - 3 + 1, 1, 1],
    strides=[1, 1, 1, 1],
    padding='VALID',
    name="pool")
pooled_outputs.append(pooled)

----------------------------------------------------------------------

pooled_outputs = []
with tf.name_scope("conv-maxpool-1"):
# Convolution Layer
filter_shape = [1, self.embedding_dim, 3, self.num_filters]
W = tf.Variable(tf.truncated_normal(filter_shape, stddev=0.1), name="W")
b = tf.Variable(tf.constant(0.1, shape=[self.num_filters]), name="b")
conv = tf.nn.conv2d(
    self.embedded_chars_expanded,
    W,
    strides=[1, 1, 1, 1],
    padding="VALID",
    name="conv")
# Apply nonlinearity
h = tf.nn.relu(tf.nn.bias_add(conv, b), name="relu")
# Maxpooling over the outputs
pooled = tf.nn.max_pool(
    h,
    ksize=[1, self.max_length - 1 + 1, 1, 1],
    strides=[1, 1, 1, 1],
    padding='VALID',
    name="pool")
pooled_outputs.append(pooled)

【问题讨论】:

这个矩阵图是怎么做的? @Tlaloc-ES 我刚刚使用了 MS 电源点。 self.embedded_chars_expanded的形状是什么?我假设它的宽度是 9,如图所示? @kafman 它取决于模型如下:) model1 : 批量大小 x 27(max_length) x 9(embedding_dimension) x 1 // model2 : 批量大小 x 9(max_length) x 9(embedding_dimension) x 3 【参考方案1】:

在第一个模型中,您将步幅设置为[1, 1, 3, 1],并且您没有指定数据顺序,因此默认为NHWC,即(num_batches, height, width, channels)(检查docu) .因此,正如您的模型 1 所示,步幅 3 适用于宽度,而不是高度。因为你使用的是VALID padding,顺便说一下,宽度上的步幅为 3 没有影响。

所以基本上,您对模型 1 的描述是错误的:在第 2 步中,它没有跳到第 4 行,而是跳到第 2 行。这意味着模型 1 计算的卷积数大约是模型 2 的 3 倍。

还有其他可能导致速度差异的因素 - 可能模型 2 可以在 GPU 上更好地并行化,但这很难判断。

【讨论】:

iOS:使用 playInputClick 与带有音频工具箱的 (1104) 声音文件之间是不是存在性能差异?

...S:使用playInputClick与带有音频工具箱的(1104)声音文件之间是不是存在性能差异?【英文标题】:iOS:IsthereaperformancedifferencebetweenusingplayInputClickvsthe(1104)soundfilewithaudiotoolbox?iOS:使用playInputClick与带有音频工具箱的(1104)声音文件之间... 查看详情

Linq:根据条件计算两个条目之间的差异(前瞻)

】Linq:根据条件计算两个条目之间的差异(前瞻)【英文标题】:Linq:Calculatedifferencebetweentwoentriesbasedoncondition(lookahead)【发布时间】:2022-01-0820:35:31【问题描述】:数据库包含带有设备特定代码的错误日志条目。如果代码为非0... 查看详情

PyTorch 中的 nn.functional() 与 nn.sequential() 之间是不是存在计算效率差异

】PyTorch中的nn.functional()与nn.sequential()之间是不是存在计算效率差异【英文标题】:Arethereanycomputationalefficiencydifferencesbetweennn.functional()Vsnn.sequential()inPyTorchPyTorch中的nn.functional()与nn.sequential()之间是否存在计算效率差异【发布时间... 查看详情

如何根据 PL/SQL 变量值检查输入参数值是不是存在作为列表?

】如何根据PL/SQL变量值检查输入参数值是不是存在作为列表?【英文标题】:HowtocheckvalueexistofaninputparamvalueasalistagainstaPL/SQLvariablevalue?如何根据PL/SQL变量值检查输入参数值是否存在作为列表?【发布时间】:2017-09-0106:02:05【问题... 查看详情

径向功率谱分析

...发布时间】:2013-08-0415:17:30【问题描述】:首先-我需要根据波数|k|绘制这个径向平均光谱一维。但是我很早就计算了|k|使用两个矩阵,所以我有一个表示|k|的矩阵。所以我也必须对这个矩阵进行径向平均?第二-如果我在使用FFT2... 查看详情

php 检查文件差异是不是存在并获取文件差异

】php检查文件差异是不是存在并获取文件差异【英文标题】:phpcheckfilediffexistandgetfilediffphp检查文件差异是否存在并获取文件差异【发布时间】:2013-05-0807:29:31【问题描述】:如何使用php检查和查找两个文件之间的差异(例如svnd... 查看详情

C ++中的指针和引用之间是不是存在任何开销差异[重复]

】C++中的指针和引用之间是不是存在任何开销差异[重复]【英文标题】:IsthereanyoverheaddifferencebetweenapointerandreferenceinC++[duplicate]C++中的指针和引用之间是否存在任何开销差异[重复]【发布时间】:2018-11-1611:36:59【问题描述】:传递... 查看详情

原始的 Scintilla 和 ScnitillaNet 控件之间是不是存在重大差异?

】原始的Scintilla和ScnitillaNet控件之间是不是存在重大差异?【英文标题】:ArethereanymajordifferencesbetweentheoriginalScintillaandScnitillaNetcontrol?原始的Scintilla和ScnitillaNet控件之间是否存在重大差异?【发布时间】:2012-05-1706:32:24【问题描... 查看详情

带有形状、填充和颜色的 geom_point

...ggplot点,显示x_axis的每个级别中变量“y轴”的均值和sd,根据cat.1具有不同的形状,根据cat.2具有不同的颜色。根据“时间”有3个面板数据框“示例”可以从这里下载:https://drive.google.com/file/ 查看详情

不成熟的想法:计算的粒度

...程序在些指标上的度量值,计算这些所谓的差异性,最后根据差异性进行缺陷预测或定位。2疑点前提条件未必成立即在这些度量指标上未必存在显著差异有点类似于在原子层面上、甚至更细微的质子或中子等层面比较物质的物... 查看详情

“select *”和所有列的选择之间是不是存在速度差异? [复制]

】“select*”和所有列的选择之间是不是存在速度差异?[复制]【英文标题】:Isthereaspeeddifferencebetween"select*"andaselectwithallcolumns?[duplicate]“select*”和所有列的选择之间是否存在速度差异?[复制]【发布时间】:2012-09-2605:37:5... 查看详情

视图和内联表函数之间是不是存在性能差异?

】视图和内联表函数之间是不是存在性能差异?【英文标题】:Arethereperformancedifferencesbetweenviewsandin-linetablefunctions?视图和内联表函数之间是否存在性能差异?【发布时间】:2018-01-3022:03:55【问题描述】:我目前在使用视图和内... 查看详情

不同位大小的 POS 上的数据类型之间是不是存在差异?

】不同位大小的POS上的数据类型之间是不是存在差异?【英文标题】:Isthereadifferencebetweendatatypesondifferentbit-sizeOSes?不同位大小的POS上的数据类型之间是否存在差异?【发布时间】:2012-04-1820:04:19【问题描述】:我有一个C程序,... 查看详情

SQL命令计算2列之间的差异

】SQL命令计算2列之间的差异【英文标题】:SQLCommandtocalculatedifferencebetween2columns【发布时间】:2021-05-2010:26:17【问题描述】:我在OracleSQL方面不是很胜任,我被分配了这项任务。我想查找具有相同id的先前记录并计算它们的table_va... 查看详情

PHP 与 Java 是不是存在能耗差异?

】PHP与Java是不是存在能耗差异?【英文标题】:PHPvs.Javaarethereenergyconsumptiondifferences?PHP与Java是否存在能耗差异?【发布时间】:2009-08-2315:49:40【问题描述】:我听到一个谣言,Java消耗的能量比PHP少,我想知道这是否以及如何实... 查看详情

计算气温差异值

...k;/***@Auther:chaoqiang.zhou*@Date:2019/9/2717:06*@Description:根据每日气温列表,请重新生成一个列表,对应位置的输入是你需要再等待多久温度才会升高超过该日的天数。如果之后都不会升高ÿ 查看详情

计算气温差异值

...k;/***@Auther:chaoqiang.zhou*@Date:2019/9/2717:06*@Description:根据每日气温列表,请重新生成一个列表,对应位置的输入是你需要再等待多久温度才会升高超过该日的天数。如果之后都不会升高ÿ 查看详情

针对不同 .NET 版本的程序集之间是不是存在显着差异?

】针对不同.NET版本的程序集之间是不是存在显着差异?【英文标题】:Arethereanysignificantdifferencesbetweenassembliestargetingdifferent.NETversions?针对不同.NET版本的程序集之间是否存在显着差异?【发布时间】:2015-11-0107:55:42【问题描述】... 查看详情