小编dun*_*r94的帖子

在Keras中实现批次依赖性损失

我在Keras中设置了自动编码器。我希望能够根据预定的“精度”向量加权输入向量的特征。此连续值向量的长度与输入的长度相同,并且每个元素都位于范围内[0, 1],与相应输入元素的置信度相对应,其中1是完全置信度,0是无置信度。

对于每个示例,我都有一个精确向量。

我定义了一种损失,其中考虑了该精度向量。在这里,低置信度特征的重构权重降低。

def MAEpw_wrapper(y_prec):
    def MAEpw(y_true, y_pred):
        return K.mean(K.square(y_prec * (y_pred - y_true)))
    return MAEpw
Run Code Online (Sandbox Code Playgroud)

我的问题是精度张量y_prec取决于批次。我希望能够y_prec根据当前批次进行更新,以使每个精度向量都与其观察值正确关联。

我做了以下工作:

global y_prec
y_prec = K.variable(P[:32])
Run Code Online (Sandbox Code Playgroud)

P是一个包含所有精度向量的numpy数组,其索引与示例相对应。我初始化y_prec为批次大小为32的正确形状。然后定义以下内容DataGenerator

class DataGenerator(Sequence):

    def __init__(self, batch_size, y, shuffle=True):

        self.batch_size = batch_size

        self.y = y

        self.shuffle = shuffle
        self.on_epoch_end()

    def on_epoch_end(self):
        self.indexes = np.arange(len(self.y))

        if self.shuffle == True:
            np.random.shuffle(self.indexes)

    def __len__(self):
        return int(np.floor(len(self.y) / self.batch_size))

    def __getitem__(self, index):
        indexes = self.indexes[index * self.batch_size: (index+1) * …
Run Code Online (Sandbox Code Playgroud)

python keras tensorflow loss-function

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

PyCharm:在内存中存储变量,以便能够从"检查点"运行代码

我一直在寻找答案,但无济于事.我希望能够运行我的代码并将变量存储在内存中,以便我可以设置一个"检查点",我可以在将来运行它.原因是我有一个相当昂贵的功能需要一些时间来计算(以及用户输入),如果我不必等待它在我改变下游后的每次运行时都要完成它会很好.

我确信PyCharm中存在这样的功能,但我不知道它的名称是什么,而且根据我的经验,文档对我来说并不是很清楚.如果有人能指出我正确的方向,这将节省我很多时间.

python pycharm

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

标签 统计

python ×2

keras ×1

loss-function ×1

pycharm ×1

tensorflow ×1