问题标签 [vgg-net]
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 - 函数定义下的元组是什么意思
最近,我从https://github.com/danfeiX/scene-graph-TF-release/阅读代码
在lib/fast-rcnn/models.py
中,有很多 tuple-under-function 风格的代码。例如,_vgg_fc()
我想知道与下面的代码有什么不同?
gradient - 为什么Vgg16在每个卷积层之后都使用relu?
在 CS231N 课程中,它说我们希望以零为中心的数据来防止局部梯度总是与上游梯度下降的符号相同,从而导致梯度更新效率低下。但是在每一层使用relu都会输出所有正数,如何解决梯度更新效率低的问题?
python - 使用 Tensorflow 和 Keras 进行迁移学习的问题
我一直在尝试重新创建此博客文章中所做的工作。文章非常全面,代码通过协作共享。
我要做的是从预训练的 VGG19 网络中提取层,并创建一个以这些层作为输出的新网络。但是,当我组装新网络时,它与 VGG19 网络非常相似,并且似乎包含我没有提取的层。下面是一个例子。
当我们查看 VGG19 的摘要时,我们看到了我们所期望的架构。
然后,我们提取层并创建一个新模型
当new_model
创建时,我相信我们应该有一个更小的模型。然而,对模型的总结表明,新模型非常接近原始模型(它包含来自 VGG19 的 22 层中的 19 层)并且它包含我们没有提取的层。
所以我的问题是...
- 为什么我没有提取的图层会显示在
new_model
. 这些是由模型的实例化过程根据文档推断出来的吗?这似乎太接近 VGG19 架构而无法推断。 - 根据我对 Keras模型(功能 API)的理解,传递多个输出层应该创建一个具有多个输出的模型,但是,新模型似乎是顺序的,并且只有一个输出层。是这样吗?
python - 如何将 Lambda 层作为输入层添加到 Keras 中的现有模型中?
我的任务是向 Keras 模型添加图像预处理层,因此在加载 Keras 模型后,我想为该模型添加一个新的输入层。
我发现我可以使用Lambda
图层来预处理图像数据。图层代码为:
但我不知道如何在我的模型前面添加这一层。我找到了这个答案,但我无法在keras.layers.Input()
.
有没有办法将Lambda
图层设置为新的输入图层?
tensorflow - 为什么使用 Tensorflow 的非标准 VGG 实现?
Tensorflow .slim 库实现了 vgg,但用卷积层替换了全连接层。代码位于:
https://github.com/tensorflow/tensorflow/blob/master/tensorflow/contrib/slim/python/slim/nets/vgg.py
例如,fc8 层实现为:
这看起来是一个非常不同的操作,权重要少得多。这是什么原因?
python - 如何解决类型错误 - Lime 解释 CNN 结果
我正在使用带有 Tesorflow 后端的 keras(使用 python 2.7),并且我在具有四个类的预训练 vgg16 模型之上构建了两个密集层。我在验证集上得到了相当不错的结果。现在我想用石灰来解释我的结果。
我导入了石灰包并在石灰 github 存储库https://github.com/marcotcr/lime/blob/master/doc/notebooks/Tutorial%20-%20Image%20Classification%20Keras.ipynb之后转换了我的一张图像。我的 path_list 包含一张照片。
然后
我收到此错误:
根据文档,“classifier_fn:获取图像列表并返回预测概率矩阵的函数”。我用 model_top.predict 替换了这个参数。如果我调用 predictions = model_top.predict(validation_data, batch_size=32),我可以获得所有的预测
任何帮助,将不胜感激。
python - VGG 迁移学习 - 预测生成器显示与评估生成器不同的结果
我构建了一个基于 VGG 预训练模型的 CNN。我微调了最后一个 conv 块(#5)以及我添加的全连接层。我的分类问题有 4 个类,我的最后一个激活层是“softmax”,我使用“sparse_categorical_crossentropy”作为我的损失函数。当我创建我的火车/有效生成器时,我使用的是 class_mode('sparse')。因此,我拟合了我的模型,并且在 2 个 epoch 后,我的验证数据集的准确率达到了 92%。我遇到的问题是,当我检查 predict_generator 以查看我对验证集的预测时,准确度约为 73 真实预测/(73 + 161 错误预测)= 0.31%,但是 model.evaluate_generator(validation_generator) 有 91%准确性。
任何帮助表示赞赏。
tensorflow - Keras VGG16 preprocess_input 模式
我正在使用Keras VGG16 模型。
我已经看到有一个preprocess_input 方法可以与 VGG16 模型结合使用。此方法似乎调用 imagenet_utils.py 中的preprocess_input 方法(视情况而定)调用imagenet_utils.py 中的 _preprocess_numpy_input 方法。
有preprocess_input
一个mode
参数需要“caffe”、“tf”或“torch”。如果我在 Keras 中使用带有 TensorFlow 后端的模型,我绝对应该使用mode="tf"
吗?
如果是,这是因为 Keras 加载的 VGG16 模型是用经过相同预处理的图像训练的(即将输入图像的范围从 [0,255] 更改为输入范围 [-1,1])?
另外,测试模式的输入图像是否也应该进行这种预处理?我相信最后一个问题的答案是肯定的,但我想要一些保证。
我希望 Francois Chollet 能正确地做到这一点,但是看看https://github.com/fchollet/deep-learning-models/blob/master/vgg16.py是他还是我在使用mode="tf"
.
更新信息
@FalconUA 将我带到牛津的 VGG,它有一个模型部分,其中包含 16 层模型的链接。有关preprocessing_input
mode
参数tf
缩放到 -1 到 1 并caffe
减去一些平均值的信息,请访问Models 16 层模型中的链接:信息页面。在描述部分它说:
“在论文中,模型表示为使用尺度抖动训练的配置 D。输入图像应通过平均像素(而不是平均图像)减法以零为中心。即,应减去以下 BGR 值:[103.939, 116.779、123.68]。”
python - Chainer 中加载的神经网络层的梯度
我在 Chainer 中加载一个预训练模型:
然后,我用一些数据进行前向传递并添加一个损失层:
acts = net.predict([image]).array
loss=chainer.Variable(np.array(np.sum(np.square(acts-one_hot))))
现在的问题是,我怎样才能进行反向传递并获得不同层的渐变?
典型的向后方法不起作用。
computer-vision - Pytorch:修改 VGG16 架构
我目前正在尝试修改 VGG16 网络架构,使其能够接受 400x400 像素的图像。
根据我读过的文献,这样做的方法是将全连接(FC)层转换为卷积(CONV)层。这实质上将“允许网络有效地“滑动”在更大的输入图像上,并对图像的不同部分进行多次评估,并结合所有可用的上下文信息。” 之后,Average Pooling 层用于“将多个特征向量平均为一个总结输入图像的特征向量”。
我已经使用此功能完成了此操作,并提出了以下网络架构:
我的问题很简单:最后是否需要使用平均池化层?似乎通过最后一个卷积层,我们得到了一个 3 通道的 1x1 图像。对此进行平均池化似乎没有任何效果。
如果我的逻辑/架构中有任何问题,请随时指出。谢谢!