我有一个numpy数组arr.这是一个numpy.ndarray,大小是(5553110,),dtype=float32.
当我做:
(arr > np.pi )[3154950]
False
(arr[3154950] > np.pi )
True
Run Code Online (Sandbox Code Playgroud)
为什么第一次比较错了?我该如何解决?
价值:
arr[3154950]= 3.1415927
np.pi= 3.141592653589793
Run Code Online (Sandbox Code Playgroud)
问题是精确的吗?
我正在尝试编写一个bash脚本,除了第一个参数之外,还执行另一个bash脚本,所以我不能使用:
bash abc.sh"$ @"
因为它也会传递我不想要的第一个参数.我怎样才能删除第一个参数?
我的数据集已经有加权示例.在这个二进制分类中,与第二类相比,我也有更多的第一类.
我可以同时使用它们sample_weight并class_weight在model.fit()功能中进一步重新加权吗?
或者我首先创建一个new_weights的新数组并将其传递给fit函数sample_weight?
编辑:
为了进一步说明,我已经在我的数据集中为每个样本设置了单独的权重,并且为了进一步增加复杂性,第一类的样本权重的总和远远大于第二类的总样本权重.
例如,我目前有:
y = [0,0,0,0,1,1]
sample_weights = [0.01,0.03,0.05,0.02,0.01,0.02]
所以权重的总和为类"0"是0.11和类"1"是 0.03.所以我应该:
class_weight = {0:1.,1:0.11/0.03}
我需要使用两个sample_weightAND class_weight功能.如果一个覆盖另一个,那么我将不得不创建新的sample_weights然后使用fit()或train_on_batch().
所以我的问题是,我可以同时使用它们,还是覆盖另一个?
我的生成神经网络的最后一层有一个 l1 activity_regularizer=l1 :
outputs = Dense(200, activation='softmax', activity_regularizer=l1(1e-5))(x)
Run Code Online (Sandbox Code Playgroud)
它使我的结果更好,但我不明白为什么它会改变 softmax 激活的任何内容。输出的总和 = 1 ,所有正值总是如此,所以正则化器无论如何都应该给出完全相同的损失。
我activity_regularizer=l1(1e-5)在训练中做什么?
我正在尝试在Keras中创建一个激活函数,该函数可以采用如下所示的参数beta:
from keras import backend as K
from keras.utils.generic_utils import get_custom_objects
from keras.layers import Activation
class Swish(Activation):
def __init__(self, activation, beta, **kwargs):
super(Swish, self).__init__(activation, **kwargs)
self.__name__ = 'swish'
self.beta = beta
def swish(x):
return (K.sigmoid(beta*x) * x)
get_custom_objects().update({'swish': Swish(swish, beta=1.)})
Run Code Online (Sandbox Code Playgroud)
它在没有beta参数的情况下可以正常运行,但是如何在激活定义中包含参数?我也model.to_json()喜欢在激活ELU 时保存该值。
更新:我根据@today的答案编写了以下代码:
from keras.layers import Layer
from keras import backend as K
class Swish(Layer):
def __init__(self, beta, **kwargs):
super(Swish, self).__init__(**kwargs)
self.beta = K.cast_to_floatx(beta)
self.__name__ = 'swish'
def call(self, inputs):
return K.sigmoid(self.beta * …Run Code Online (Sandbox Code Playgroud) python machine-learning keras activation-function keras-layer
我有一个带有两个损失函数的神经网络,一个是两个类的二元交叉熵,另一个是回归。现在我希望只对class_2评估回归损失,并为class_1返回0,因为回归特征对于class_1没有意义。
如何在 Keras 中实现这样的算法?
仅在 class_1 数据上单独训练它不起作用,因为我得到了 nan 损失。mean_square_loss有更优雅的方法来将数据集的一半和另一半的损失定义为 0 吗?