草庐IT

python - 如何在损失函数中的 keras 张量上使用 numpy 函数?

我使用带有TensorFlow后端的Keras来构建和运行神经网络。我需要在损失函数的输出张量上使用numpy函数。更具体地说,我的损失函数涉及寻找最近的邻居,我需要为ckdTree使用Keras功能。以此目的。我尝试使用K.eval()将我的输出张量转换为numpy数组。但是,我相信,当我尝试编译模型时,这会引发InvalidArgument错误,因为您无法在符号变量上运行eval()。这是重现此错误的玩具代码片段。importnumpyasnpfromkerasimportbackendasKfromkeras.modelsimportSequentialfromkeras.lay

python - 如何解决南损失?

问题我在MNIST上运行深度神经网络,损失定义如下:cost=tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(pred,label))程序似乎可以正常运行,直到我在第10000多个小批量中出现nan损失。有时,程序会正确运行直到完成。我认为tf.nn.softmax_cross_entropy_with_logits给我这个错误。这很奇怪,因为代码只包含mul和add操作。可能的解决方案也许我可以使用:ifcost=="nan":optimizer=anemptyoptimizerelse:...optimizer=real

python - 如何使用 sparse_softmax_cross_entropy_with_logits 在 tensorflow 中实现加权交叉熵损失

我开始使用tensorflow(来自Caffe),我正在使用损失sparse_softmax_cross_entropy_with_logits。该函数接受像0,1,...C-1这样的标签,而不是onehot编码。现在,我想根据类标签使用权重;我知道,如果我使用softmax_cross_entropy_with_logits(一个热编码),这可能可以通过矩阵乘法来完成,有没有办法用sparse_softmax_cross_entropy_with_logits做同样的事情? 最佳答案 importtensorflowastfimp

python - Actor 评论家政策损失为零(没有改善)

我创建了一个Actor评论家模型来测试一些OpenAI健身房环境。但是,我在某些环境中遇到了问题。CartPole:模型最终收敛并获得最大奖励。然而,由于某种原因,如果我只使用策略梯度方法而不是值(value)函数/优势,它会更快地收敛。MountainCar、Acrobot:这两个模型都有负奖励。如果您的代理需要10秒来完成任务,您的奖励将为-10。出于某种原因,当我尝试解决具有负奖励的环境时,我的策略从负值开始并慢慢收敛到0。值(value)损失开始高得离谱并开始减少,尽管它在某个时刻(当策略崩溃时)趋于平稳。谁能帮我诊断问题?我添加了一些带有相关情节值的日志记录语句。fromsc

python - Keras 中的多个类的总损失是如何计算的?

假设我有以下参数的网络:用于语义分割的全卷积网络loss=weightedbinarycrossentropy(但它可以是任何损失函数,没关系)5个类别-输入是图像,groundtruths是二进制掩码批量大小=16现在,我知道损失是按以下方式计算的:二进制交叉熵应用于图像中每个类的每个像素。所以本质上,每个像素将有5个损失值这一步之后会发生什么?当我训练我的网络时,它只打印一个时期的单个损失值。产生单个值需要发生许多级别的损失累积,并且在文档/代码中根本不清楚它是如何发生的。首先合并什么-(1)类的损失值(例如每个像素合并5个值(每个类一个)),然后是图像中的所有像素或(2)图像中的

python - Keras 中的自定义加权损失函数,用于对每个元素进行加权

我正在尝试创建一个简单的加权损失函数。比如说,我的输入维度是100*5,输出维度也是100*5。我还有一个相同维度的权重矩阵。类似下面的内容:importnumpyasnptrain_X=np.random.randn(100,5)train_Y=np.random.randn(100,5)*0.01+train_Xweights=np.random.randn(*train_X.shape)定义自定义损失函数defcustom_loss_1(y_true,y_pred):returnK.mean(K.abs(y_true-y_pred)*weights)定义模型fromkeras.l

python - 在 Keras 中使用 Tensorflow Huber 损失

我正在尝试在keras模型中使用huber损失(编写DQN),但结果很糟糕,我认为我做错了什么。我的代码如下。model=Sequential()model.add(Dense(output_dim=64,activation='relu',input_dim=state_dim))model.add(Dense(output_dim=number_of_actions,activation='linear'))loss=tf.losses.huber_loss(delta=1.0)model.compile(loss=loss,opt='sgd')returnmodel

python - siamese-net 中的自定义组合铰链/kb-divergence 损失函数无法生成有意义的说话人嵌入

我目前正在尝试在Keras中实现siamese-net,我必须在其中实现以下损失函数:loss(p∥q)=Is·KL(p∥q)+Ids·HL(p∥q)detaileddescriptionoflossfunctionfrompaper其中KL是Kullback-Leibler散度,HL是Hinge-loss。在训练过程中,我将相同说话人对标记为1,将不同说话人标记为0。目标是使用经过训练的网络从频谱图中提取嵌入。频谱图是一个二维numpy数组40x128(时间x频率)问题是我从来没有超过0.5的准确度,当对说话人嵌入进行聚类时,结果显示嵌入和说话人之间似乎没有相关性我将kb-diver

python - 如何使用keras找到损失值?

我想使用keras中定义的各种损失函数来手动计算损失值。例如:fromkeras.lossesimportbinary_crossentropyerror=binary_crossentropy([1,2,3,4],[6,7,8,9])给我错误AttributeError:'list'objecthasnoattribute'dtype'.类似的方式我想使用其他keras损失函数。我有我的y_pred和y_true列表/数组。 最佳答案 您可以使用K.variable()包装输入并使用K.eval()获取值。fromkeras.lo

python - TensorFlow 有内置 KL 散度损失函数吗?

我有两个张量,prob_a和prob_b,形状为[None,1000],我想从计算KL散度code>prob_a到prob_b。TensorFlow中是否有针对此的内置函数?我尝试使用tf.contrib.distributions.kl(prob_a,prob_b),但它给出了:NotImplementedError:NoKL(dist_a||dist_b)registeredfordist_atypeTensoranddist_btypeTensor如果没有内置函数,什么是好的解决方法? 最佳答案 假设您的输入张量prob_a和