我在CNN上工作了几百GB的图像.我已经创建了一个训练功能,可以剔除这些图像的4Gb块并调用fit每个部分.我担心我只训练最后一块而不是整个数据集.
实际上,我的伪代码看起来像这样:
DS = lazy_load_400GB_Dataset()
for section in DS:
X_train = section.images
Y_train = section.classes
model.fit(X_train, Y_train, batch_size=16, nb_epoch=30)
Run Code Online (Sandbox Code Playgroud)
我知道API和Keras论坛说这将训练整个数据集,但我不能直观地理解为什么网络不会重新学习最后一个训练块.
一些帮助理解这将非常感激.
最好,乔
machine-learning neural-network theano conv-neural-network keras
在大多数体系结构中,conv层后面跟着一个池化层(max/avg等).由于这些汇集层只是选择前一层的输出(即转换),我们是否可以使用带有步幅2的卷积并期望类似的精度结果和减少的过程需求?
我正在尝试使用预先训练的模型。这就是问题发生的地方
模型不是应该接收简单的彩色图像吗?为什么它需要 4 维输入?
RuntimeError Traceback (most recent call last)
<ipython-input-51-d7abe3ef1355> in <module>()
33
34 # Forward pass the data through the model
---> 35 output = model(data)
36 init_pred = output.max(1, keepdim=True)[1] # get the index of the max log-probability
37
5 frames
/usr/local/lib/python3.6/dist-packages/torch/nn/modules/conv.py in forward(self, input)
336 _pair(0), self.dilation, self.groups)
337 return F.conv2d(input, self.weight, self.bias, self.stride,
--> 338 self.padding, self.dilation, self.groups)
339
340
RuntimeError: Expected 4-dimensional input for 4-dimensional weight 32 3 3, but got 3-dimensional input of …Run Code Online (Sandbox Code Playgroud) machine-learning computer-vision conv-neural-network pytorch torchvision
我正在研究CS231n卷积神经网络用于视觉识别的卷积神经网络.在卷积神经网络,神经元被设置在3个维度(height,width,depth).我遇到depth了CNN的问题.我无法想象它是什么.
在链接中他们说The CONV layer's parameters consist of a set of learnable filters. Every filter is small spatially (along width and height), but extends through the full depth of the input volume.
我可以理解我们从图像中取出一小块区域,然后将其与"过滤器"进行比较.那么滤镜会收集小图片吗?他们还说,We will connect each neuron to only a local region of the input volume. The spatial extent of this connectivity is a hyperparameter called the receptive field of the neuron.那么感受野与过滤器具有相同的尺寸吗?这里的深度又是什么?我们用CNN的深度表示什么?
所以,我的问题主要是,如果我拍摄的图像具有维度[32*32*3](假设我有50000个这样的图像,制作数据集[50000*32*32*3] …
machine-learning neural-network deep-learning conv-neural-network
众所周知,现代最流行的CNN(卷积神经网络):VGG/ResNet(FasterRCNN),SSD,Yolo,Yolo v2,DenseBox,DetectNet - 不是旋转不变的:现代CNN(卷积神经网络)是否像DetectNet一样旋转不变?
还知道,有几个神经网络具有旋转不变对象检测:
Rotation-Invariant Neoperceptron 2006(PDF):https://www.researchgate.net/publication/224649475_Rotation-Invariant_Neoperceptron
学习用于纹理分类的旋转不变卷积滤波器2016(PDF):https://arxiv.org/abs/1604.06720
RIFD-CNN:用于物体检测的旋转不变和Fisher判别卷积神经网络2016(PDF):http://www.cv-foundation.org/openaccess/content_cvpr_2016/html/Cheng_RIFD-CNN_Rotation-Invariant_and_CVPR_2016_paper.html
卷积神经网络中的编码不变性2014(PDF)
用于星系形态预测的旋转不变卷积神经网络(PDF):https://arxiv.org/abs/1503.07077
学习旋转不变卷积神经网络用于VHR光学遥感图像中的物体检测2016:http://ieeexplore.ieee.org/document/7560644/
我们知道,在这样的图像检测竞赛中:IMAGE-NET,MSCOCO,PASCAL VOC - 使用的网络集合(同时是一些神经网络).或网络集成在单网中,如ResNet(残留网络表现得像相对浅网络的集合)
但是在像MSRA这样的获胜者中使用旋转不变的网络集合,如果没有,那么为什么呢?为什么在整体中额外的旋转不变网络不会增加精确度以检测某些物体,例如飞机物体 - 哪些图像是在不同的旋转角度下完成的?
有可能:
为什么旋转不变神经网络不会用于流行的对象检测竞赛的获胜者?
machine-learning computer-vision neural-network deep-learning conv-neural-network
在训练网络时,我一直看到一种非常奇怪的行为,经过几十次迭代(8到10小时)的学习,一切都中断,训练损失增加:
训练数据本身是随机的,并且分布在.tfrecord包含1000每个示例的许多文件中,然后在输入阶段再次洗牌并批量处理200示例.
我正在设计一个同时执行四个不同回归任务的网络,例如确定对象出现在图像中的可能性并同时确定其方向.网络以几个卷积层开始,一些具有剩余连接,然后分支到四个完全连接的段.
由于第一次回归导致概率,我使用交叉熵进行损失,而其他使用经典L2距离.然而,由于它们的性质,概率损失大约为0..1,而定向损失可能要大得多0..10.我已经将输入和输出值标准化并使用剪切
normalized = tf.clip_by_average_norm(inferred.sin_cos, clip_norm=2.)
Run Code Online (Sandbox Code Playgroud)
在事情变得非常糟糕的情况下.
我已经(成功地)使用Adam优化器来优化包含所有不同损失(而不是reduce_sum它们)的张量,如下所示:
reg_loss = tf.reduce_sum(tf.get_collection(tf.GraphKeys.REGULARIZATION_LOSSES))
loss = tf.pack([loss_probability, sin_cos_mse, magnitude_mse, pos_mse, reg_loss])
optimizer = tf.train.AdamOptimizer(learning_rate=learning_rate,
epsilon=self.params.adam_epsilon)
op_minimize = optimizer.minimize(loss, global_step=global_step)
Run Code Online (Sandbox Code Playgroud)
为了在TensorBoard中显示结果,我实际上是这样做的
loss_sum = tf.reduce_sum(loss)
Run Code Online (Sandbox Code Playgroud)
标量摘要.
Adam被设置为学习率1e-4和epsilon 1e-4(我看到与epislon的默认值相同的行为,当我保持学习率时,它会更快地打破1e-3).正规化对这一点也没有影响,它在某种程度上是这样做的.
我还应该补充说,停止训练并从最后一个检查点重新启动 - 这意味着训练输入文件也会再次洗牌 - 导致相同的行为.在那一点上,训练似乎总是表现得相似.
我对Tensorflow和ML一般都很新,所以我特此为一个(可能)微不足道的问题道歉.
我使用dropout技术来提高我的网络的学习率,它似乎工作得很好.然后,我想测试网络上的一些数据,看看它是否像这样工作:
def Ask(self, image):
return self.session.run(self.model, feed_dict = {self.inputPh: image})
Run Code Online (Sandbox Code Playgroud)
显然,每次丢失仍然存在时,它会产生不同的结果.我能想到的一个解决方案是创建两个独立的模型 - 一个用于培训,另一个用于实际网络的后期使用,但是,这样的解决方案对我来说似乎不切实际.
解决这个问题的常用方法是什么?
python machine-learning neural-network conv-neural-network tensorflow
我正在阅读神经转移pytorch教程,并对使用retain_variable(弃用,现在称为retain_graph)感到困惑.代码示例显示:
class ContentLoss(nn.Module):
def __init__(self, target, weight):
super(ContentLoss, self).__init__()
self.target = target.detach() * weight
self.weight = weight
self.criterion = nn.MSELoss()
def forward(self, input):
self.loss = self.criterion(input * self.weight, self.target)
self.output = input
return self.output
def backward(self, retain_variables=True):
#Why is retain_variables True??
self.loss.backward(retain_variables=retain_variables)
return self.loss
Run Code Online (Sandbox Code Playgroud)
从文档中
retain_graph(bool,optional) - 如果为False,将释放用于计算grad的图形.请注意,几乎在所有情况下都不需要将此选项设置为True,并且通常可以以更有效的方式解决此问题.默认为create_graph的值.
因此,通过设置retain_graph= True,我们不会释放在向后传递上为图形分配的内存.保持这种记忆的优势是什么,我们为什么需要它?
automatic-differentiation backpropagation neural-network conv-neural-network pytorch
我最近在研究 CNN,我想知道 softmax 公式中温度的函数是什么?为什么我们应该使用高温来查看概率分布中更软的范数?Softmax 公式
machine-learning deep-learning conv-neural-network softmax densenet
偶尔我会看到一些模型正在使用SpatialDropout1D而不是Dropout.例如,在词性标注神经网络中,他们使用:
model = Sequential()
model.add(Embedding(s_vocabsize, EMBED_SIZE,
input_length=MAX_SEQLEN))
model.add(SpatialDropout1D(0.2)) ##This
model.add(GRU(HIDDEN_SIZE, dropout=0.2, recurrent_dropout=0.2))
model.add(RepeatVector(MAX_SEQLEN))
model.add(GRU(HIDDEN_SIZE, return_sequences=True))
model.add(TimeDistributed(Dense(t_vocabsize)))
model.add(Activation("softmax"))
Run Code Online (Sandbox Code Playgroud)
根据Keras的文件,它说:
此版本执行与Dropout相同的功能,但它会丢弃整个1D功能图而不是单个元素.
但是,我无法理解entrie 1D功能的含义.更具体地说,我无法SpatialDropout1D在quora中解释的相同模型中进行可视化.有人可以使用与quora相同的模型来解释这个概念吗?
另外,在什么情况下我们会用SpatialDropout1D而不是Dropout?
machine-learning deep-learning conv-neural-network keras dropout
keras ×2
pytorch ×2
tensorflow ×2
densenet ×1
dropout ×1
max-pooling ×1
python ×1
softmax ×1
theano ×1
torchvision ×1