小编Eri*_*ric的帖子

Keras中的自定义丢失功能

我正在研究一种图像类增量分类器方法,使用CNN作为特征提取器和一个完全连接的块进行分类.

首先,我对每个训练有素的VGG网络进行了微调,以完成一项新任务.一旦网络被训练用于新任务,我就为每个班级存储一些示例,以避免在新班级可用时忘记.

当某些类可用时,我必须计算样本的每个输出,包括新类的示例.现在为旧类的输出添加零,并在新类输出上添加与每个新类对应的标签,我有新标签,即:如果有3个新类输入....

旧班类型输出: [0.1, 0.05, 0.79, ..., 0 0 0]

新类类型输出:[0.1, 0.09, 0.3, 0.4, ..., 1 0 0]**最后的输出对应于类.

我的问题是,我如何改变自定义的损失函数来训练新的类?我想要实现的损失函数定义为:

损失功能

蒸馏损失对应于旧类别的输出以避免遗忘,而分类损失对应于新类别.

如果你能给我一些代码样本来改变keras中的损失函数会很好.

谢谢!!!!!

computer-vision deep-learning conv-neural-network keras loss-function

39
推荐指数
2
解决办法
4万
查看次数

在 Keras 中向输出层添加新节点

我想向输出层添加新节点以便稍后对其进行训练,我正在这样做:

def add_outputs(self, n_new_outputs):
    out = self.model.get_layer('fc8').output
    last_layer = self.model.get_layer('fc7').output
    out2 = Dense(n_new_outputs, activation='softmax', name='fc9')(last_layer)
    output = merge([out, out2], mode='concat')
    self.model = Model(input=self.model.input, output=output)
Run Code Online (Sandbox Code Playgroud)

其中'fc7'是输出层之前的全连接层'fc8'。我希望只有最后一层,out = self.model.get_layer('fc8').output但输出是所有模型。有没有办法只从网络中获取一层?也许还有其他更简单的方法可以做到这一点......

谢谢!!!!

neural-network python-3.x deep-learning keras keras-layer

5
推荐指数
1
解决办法
1571
查看次数

categorical_crossentropy keras实现

我正在尝试应用蒸馏的概念,基本上是为了训练一个新的小型网络与原始网络一样,但计算量较少.

我有每个样本的softmax输出而不是logits.

我的问题是,如何实现分类交叉熵损失函数?就像它采用原始标签的最大值并将其与相同索引中的相应预测值相乘,或者它在整个logits(One Hot encoding)中的总和如公式所示: 在此输入图像描述

谢谢!!

python keras tensorflow softmax loss-function

3
推荐指数
2
解决办法
8763
查看次数

'模型'对象没有属性'load_model'

我正在尝试加载与之一起保存的模型: model.save('myModel.h5')

该模型的定义如下:

self.model = VGGFace(input_tensor=input_tensor, include_top=True)

for layer in self.model.layers:
    layer.trainable = False

self.model.get_layer('fc7').trainable = True
last_layer = self.model.get_layer('fc7').output
out = BatchNormalization()(last_layer)
out = Dense(self.n_outputs, activation='softmax', name='fc8')(out)
self.model = Model(input=self.model.input, output=out)
Run Code Online (Sandbox Code Playgroud)

当我尝试加载myModel.h5model.load_model('myModel.h5')会引发以下错误:

AttributeError: 'Model' object has no attribute 'load_model'
Run Code Online (Sandbox Code Playgroud)

我认为这是因为我不使用Sequential模型。

那我该如何加载我的模型?由于model.save('myModel.h5')似乎工作。

谢谢!!!!

deep-learning conv-neural-network keras tensorflow

1
推荐指数
1
解决办法
6872
查看次数