损失函数中的正则化项进行数学运算和赋值
Regularization Term in Loss Function doing mathematical operations and assigning values
我认为我仍在努力理解 Tensorflows 框架以及如何以与普通数组和 numpy 一样的方式操作它。
有了损失,我得到了预测值和真实值:y_pred 和 y_true 我想遍历 y_pred 值并为其分配值 1 或 0,根据一些更小的<或更大的>条件的损失函数。
批量大小为 1000,因此输入形状为 (1000,16,16,1)。我认为代码会阐明我想做什么,我尽量简化它。
def regularization_term(y_true, y_pred):
test = y_pred
for i in tf.range(len(y_pred)):
for y in tf.range(len(y_pred[i])):
for x in tf.range(len(y_pred[i][y])):
if(random.random()>y_pred[i][y][x][0]):
test[i][y][x][0] = 0
else:
test[i][y][x][0] = 1
return test * y_true
所以我需要一种方法来为张量 'test' 赋值,以及一种从 y_pred 询问此 larger/smaller 条件的方法。怎么可能?
非常感谢!!
您可以简单地使用 tf.keras.backend.switch
根据您报告的内容,您的 regularization
函数是:
def regularization(y_true, y_pred):
zeros = tf.zeros_like(y_pred)
random = tf.random.uniform(tf.shape(y_pred), minval=0, maxval=1)
reg = tf.keras.backend.switch(random > y_pred, zeros, y_true)
return reg
简单测试:
y_true = tf.random.uniform(shape=(100,16,16,1), minval=0, maxval=1)
y_pred = tf.random.uniform(shape=(100,16,16,1), minval=0, maxval=1)
regularization(y_true, y_pred)
我认为我仍在努力理解 Tensorflows 框架以及如何以与普通数组和 numpy 一样的方式操作它。
有了损失,我得到了预测值和真实值:y_pred 和 y_true 我想遍历 y_pred 值并为其分配值 1 或 0,根据一些更小的<或更大的>条件的损失函数。
批量大小为 1000,因此输入形状为 (1000,16,16,1)。我认为代码会阐明我想做什么,我尽量简化它。
def regularization_term(y_true, y_pred):
test = y_pred
for i in tf.range(len(y_pred)):
for y in tf.range(len(y_pred[i])):
for x in tf.range(len(y_pred[i][y])):
if(random.random()>y_pred[i][y][x][0]):
test[i][y][x][0] = 0
else:
test[i][y][x][0] = 1
return test * y_true
所以我需要一种方法来为张量 'test' 赋值,以及一种从 y_pred 询问此 larger/smaller 条件的方法。怎么可能?
非常感谢!!
您可以简单地使用 tf.keras.backend.switch
根据您报告的内容,您的 regularization
函数是:
def regularization(y_true, y_pred):
zeros = tf.zeros_like(y_pred)
random = tf.random.uniform(tf.shape(y_pred), minval=0, maxval=1)
reg = tf.keras.backend.switch(random > y_pred, zeros, y_true)
return reg
简单测试:
y_true = tf.random.uniform(shape=(100,16,16,1), minval=0, maxval=1)
y_pred = tf.random.uniform(shape=(100,16,16,1), minval=0, maxval=1)
regularization(y_true, y_pred)