小编Loi*_* L.的帖子

如何设置 keras 自定义指标仅在纪元结束时调用?

我正在尝试为我的神经网络使用自定义指标,并且该指标只能在纪元结束时进行评估。我遇到的问题是,每批都会评估指标,这不是想要的行为。请注意,我正在使用生成器和fit_generatorkeras。

validation_data 加载了一个实现的生成器 keras.utils.Sequence

class DataGenerator(keras.utils.Sequence): 
   def __init__(self, inputs, labels, batch_size):
    self.inputs = inputs
    self.labels = labels
    self.batch_size = batch_size

   def __getitem__(self, index):
    #some processing done here
    return batch_inputs, batch_labels

   def __len__(self):
    return int(np.floor(len(self.inputs) / self.batch_size))
Run Code Online (Sandbox Code Playgroud)

我尝试实现 keras 文档建议的内容,但我没有找到任何信息来指定该指标只能在纪元结束时使用。

def auc_roc(y_true, y_pred):
   auc, up_opt = tf.metrics.auc(y_true, y_pred)
   K.get_session().run(tf.local_variables_initializer())
   with tf.control_dependencies([up_opt]):
       auc = tf.identity(auc)
   return auc
Run Code Online (Sandbox Code Playgroud)

因此,现在auc_roc在每个批次之后调用 ,而不是在 末尾调用一次epoch

python keras tensorflow

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

任意度数的 Numpy 矩阵旋转

我试图找到一种方法在我的矩阵上应用任意度数的矩阵旋转,该矩阵包含三个波段,如 RGB,但值大于 (0-255)。

这是我的数据示例,其形状为 (100, 100, 3):

 [[ 847.5  877.   886.  ...  821.5  856.5  898. ]
 [ 850.   883.   969.5 ...  885.   878.5  947.5]
 [ 982.   968.5  927.5 ...  909.5  958.  1037. ]
 ...
 [ 912.   827.   893.  ... 1335.  1180.  1131. ]
 [ 954.   855.5  882.  ... 1252.  1266.  1335. ]
 [ 984.   916.   930.  ... 1080.5 1278.  1385.5]]
Run Code Online (Sandbox Code Playgroud)

我找到了一个函数,scipy.misc.imrotate(image_array, 20)但问题是这个函数将我的数据重新缩放到范围 (0-255),因此我丢失了原始矩阵的信息。是否有一个函数可以在不重新缩放数据的情况下完成与前一个相同的工作?

python numpy matrix

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

标签 统计

python ×2

keras ×1

matrix ×1

numpy ×1

tensorflow ×1