我在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) 我一直在寻找答案,但无济于事.我希望能够运行我的代码并将变量存储在内存中,以便我可以设置一个"检查点",我可以在将来运行它.原因是我有一个相当昂贵的功能需要一些时间来计算(以及用户输入),如果我不必等待它在我改变下游后的每次运行时都要完成它会很好.
我确信PyCharm中存在这样的功能,但我不知道它的名称是什么,而且根据我的经验,文档对我来说并不是很清楚.如果有人能指出我正确的方向,这将节省我很多时间.