问题标签 [deep-residual-networks]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - Tensorflow:如何设置对数尺度的学习率和一些 Tensorflow 问题
我是一名深度学习和 Tensorflow 初学者,我正在尝试使用 Tensorflow实现本文中的算法。本文使用 Matconvnet+Matlab 来实现,我很好奇 Tensorflow 是否有等效的功能来实现相同的东西。报纸说:
使用 Xavier 方法 [14] 初始化网络参数。我们在 l2 惩罚下使用了四个小波子带的回归损失,并通过使用随机梯度下降 (SGD) 对所提出的网络进行了训练。正则化参数 (λ) 为 0.0001,动量为 0.9。学习率设置为从 10-1 到 10-4,在每个 epoch 以对数规模减小。
本文使用小波变换(WT)和残差学习方法(其中残差图像= WT(HR) - WT(HR'),其中HR'用于训练)。Xavier 方法建议使用以下方法初始化变量正态分布
Q1。我应该如何初始化变量?下面的代码是否正确?
本文没有详细解释如何构建损失函数。我找不到等效的 Tensorflow 函数来设置对数刻度的学习率(仅限exponential_decay
)。我理解MomentumOptimizer
相当于带有动量的随机梯度下降。
Q2:是否可以设置对数尺度的学习率?
Q3:如何创建上述损失函数?
我跟着这个网站写了下面的代码。假设model()函数返回本文提到的网络,lamda=0.0001,
注意:由于我是深度学习/Tensorflow 初学者,我在这里和那里复制粘贴代码,所以如果可以的话,请随时纠正它;)
machine-learning - 残差网络可以跳过一个线性而不是两个吗?
ResNets 中的标准是跳过 2 个线性。只跳过一个也可以吗?
machine-learning - 实现残差块
在传统的残差块中,第 N 层对第 N+2 层(非线性之前)的输出的“加法”是逐元素加法还是串联?
文献表明是这样的:
keras - 仅部分输入的 Keras 剩余连接
我已经制作了一个没有残余连接的模型,它编译和拟合没有任何错误[使用 Keras Sequential API ]
我希望测试一个修改版本,只需添加一个残留连接,如SPEECH ENHANCEMENT BASED ON DEEP NEURAL NETWORKS WITH SKIP CONNECTIONS。所以,我需要改用功能 API。
我的问题是在输入中间提取一块。我试过了。
结果是:
- 尝试 1 和尝试 2:
- 错误 = add() 期间的形状不连贯
- 尝试 3 和尝试 4:
- add() 的好形状
- 模型错误(...)
- 我一步一步进入了 Model() 。我们从最后一层开始向后退
- 输出 add() 确定
- 上一个 K.transpose(): Error AttributeError: 'Tensor' object has no attribute '_keras_history' in "build_map_of_graph"
模型构建失败是因为我使用了后端的函数(TensorFlow,对我来说)?
任何人都可以帮忙,好吗?
也许如果我使用乘法()?
- modelInputs 是 (m, N*OUTPUT_SIZE) 和 modelInputs_selected 是 (m,OUTPUT_SIZE)
- 使用好的矩阵 A (N*OUTPUT_SIZE, OUTPUT_SIZE):modelInputs_selected = multiply(modelInputs, A)
tensorflow - 将 DropoutWrapper 和 ResidualWrapper 与variational_recurrent=True 结合使用
我正在尝试创建一个用 DropoutWrapper 和 ResidualWrapper 包裹的 LSTM 单元的 MultiRNNCell。对于使用variational_recurrent=True,我们必须向DropoutWrapper 提供input_size 参数。我无法弄清楚应该将什么 input_size 传递给每个 LSTM 层,因为 ResidualWrapper 还添加了跳过连接以增加每一层的输入。
我正在使用以下实用程序函数来创建一个 LSTM 层:
以下代码用于创建完整的单元格:
对于第一层和后续 LSTM 层,应该将哪些值传递给 input_size?
python-3.x - 如何在不调用 tf.layers.batch_normalization() 的情况下在推理模式下设置批量标准化操作?
我用 tensorflow 定义了一个深度 CNN,包括一个批量标准化操作,即,我的代码可能如下所示:
假设网络已经训练好,并且检查点文件已经保存。现在我想用这个模型进行推理。通常,我可以network(input)
再次调用该函数,除了将参数传递training=False
给tf.layers.batch_normalization()
,然后从检查点文件中恢复权重。
但是,我更喜欢用它tf.import_meta_graph
来重建我的网络,因为函数中的代码network(input)
可以更改。
但是现在我如何在推理模式下设置批量标准化操作呢?由于我无法访问 function tf.layers.batch_normalization()
,因此我很难解决这个问题。
python - 如何在 Keras 中实现具有残差连接和批量归一化的一维卷积神经网络?
我正在尝试使用 keras基于论文Cardiologist-Level Arrhythmia Detection with Convolutional Neural Networks开发具有残差连接和批量归一化的一维卷积神经网络。这是到目前为止的代码:
这是我正在尝试构建的简化模型的图表。
论文中描述的模型使用递增数量的过滤器:
该网络由 16 个残差块组成,每个块有 2 个卷积层。卷积层的滤波器长度均为 16,有 64k 个滤波器,其中 k 从 1 开始,每 4 个残差块递增。每个备用残差块对其输入进行 2 倍子采样,因此原始输入最终被 2^8 倍子采样。当残差块对输入进行二次采样时,相应的快捷连接也会使用具有相同子采样因子的 Max Pooling 操作对其输入进行二次采样。
但只有在每个 Conv1D 层中使用相同数量的过滤器,k=1,strides=1 和 padding=same,而不应用任何 MaxPooling1D,我才能使它工作。这些参数的任何更改都会导致张量大小不匹配并且无法编译并出现以下错误:
有谁知道如何解决这种尺寸不匹配并使其发挥作用?
此外,如果输入有多个通道(或特征),则不匹配会更严重!有没有办法处理多个渠道?
keras - 剩余 LSTM 层
我无法理解 keras 中 LSTM 层中的张量行为。
我已经预处理了看起来像 [样本、时间步长、特征] 的数字数据。所以 10 000 个样本、24 个时间步长和 10 个预测变量。
我想堆叠剩余连接,但我不确定我做对了:
现在,作为张量的 x 的形状是 [?,?,32]。我期待 [?,32,10]。我应该将数据重塑为 [样本、特征、时间步长]?然后我形成 res:
现在我不确定这是否正确,或者我应该这样做
非常感谢任何见解。
JJ