我正在研究tensorflow.keras中的一个不平衡的分类问题。我决定按照this answer on cross validated的建议计算“几何平均分”。我在一个名为imbalanced-learn的包中发现了一个implementation of it,并意识到它不能用作tensorflow.keras.Model.compile(metrics=[])中的指标之一;而且由于我还希望在每次调用时都向它传递一个参数,所以我决定自己实现一个自定义指标并使用它。但是我在测试过程中遇到了一个错误,那就是: AttributeError: 'GeometricMeanScore
在keras的所有代码示例中,我看到输入形状是直接传递的,并且推测批处理大小是第一个,例如:
model = Sequential()
model.add(Dense(32, input_shape=(16,)))
# now the model will take as input arrays of shape (*, 16)
# and output arrays of shape (*, 32)
但是,当涉及到自定义损失时,我看到使用了最后一个轴(轴=-1)。
def loss(y_true,y_pred):
return K.mean(K.square(y_pred
我正在实现一个自定义损失函数,如下面的代码所示,用于简单的分类。但是,当我运行代码时,我得到错误ValueError:没有为任何变量提供渐变: import os
os.environ['KERAS_BACKEND'] = "tensorflow"
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from tensorflow import keras
from tensorflow.keras import layers
from sklearn.prep
我需要一些关于keras损失函数的帮助。我一直在使用Tensorflow后端在keras上实现自定义损失函数。
我已经在numpy中实现了自定义损失函数,但如果能将其转换为keras损失函数就更好了。loss函数接受数据帧和一系列用户id。如果user_id不同,则相同user_id的欧几里德距离为正和负。该函数返回数据帧的标量距离之和。
def custom_loss_numpy (encodings, user_id):
# user_id: a pandas series of users
# encodings: a pandas dataframe of encodings
我正在使用keras构建推荐模型。因为项目集相当大,所以我想计算Hits @ N metric作为精确性的度量。也就是说,如果观察到的项目在预测的前N中,它就算作相关的建议。
我能够使用numpy构建命中N函数。但是当我试图将它移植到keras的自定义丢失函数时,我的张量出现了问题。具体来说,对张量的枚举是不同的。当我研究语法以找到类似的东西时,我开始质疑整个方法。这是草率和缓慢,反映了我的一般蟒蛇熟悉。
def hits_at(y_true, y_pred): #numpy version
a=y_pred.argsort(axis=1) #ascending, sort by ro
我正在尝试用这个自定义损失函数训练我的模型:1 其中S(pn;ω)是预测值(y_pred),MOSn是目标(y_true),所以我是这样写的: import keras.backend as K
def custom_loss_function(y_true,y_pred):
for i in range(1,n+1):
l= K.abs(y_pred-y_true)
l = K.mean(l, axis=-1)
return l 然后我构建了我的模型: #Model definition
from keras import models
from keras i
因此,我正在尝试使用Keras (Tensorflow后端)中的Lambda层实现一个自定义函数。
我想把输入张量转换成numpy数组来执行我的功能。但是,我不能运行tensor.eval(),因为它抛出了一个错误:
InvalidArgumentError (see above for traceback): You must feed a value for placeholder tensor 'input_1' with dtype float and shape [?,960,960,1]
这是我的代码:
def tensor2np(tensor):
retu
众所周知,keras中的sparse_categorical_crossentropy可以得到每个类别之间的平均损失函数。但是如果只有一个特定的类别是我最关心的呢?例如,如果我想将基于此类别的精度(=TP/(TP+FP))定义为损失函数,我该如何编写它?谢谢!
我的代码是这样的:
from keras import backend as K
def my_loss(y_true,y_pred):
y_true = K.cast(y_true,"float32")
y_pred = K.cast(K.argmax(y_pred),"float32"
我想形象化CNN中给定的特征地图所学习到的模式(在本例中,我使用vgg16)。为此,我创建了一个随机图像,通过网络输入到所需的卷积层,选择特征映射并找到与输入相关的梯度。其想法是以这样一种方式改变输入,以最大限度地激活所需的功能映射。使用tensorflow 2.0,我有一个GradientTape,它跟踪函数,然后计算梯度,但是梯度不返回,为什么它不能计算梯度?
import tensorflow as tf
import matplotlib.pyplot as plt
import time
import numpy as np
from tensorflow.keras.applica
我正在尝试为我用Keras编写的模型编写一个像素加权损失函数,但在TensorFlow 2.0中似乎不再可能了,即除了y_true和y_pred之外,不可能有其他输入的损失函数
我以前是这样写的:
from tensorflow.keras.layers import Input, Conv2D
from tensorflow.keras.optimizers import Adam
from tensorflow.keras import backend as K
def my_keras_model():
input = Input((256,256,1), name='in
我试图建立一个神经网络来预测63个输入中的3个输出值。我有一个数据集,包含两个形状分别为8100、63和8100的numpy数组,但当我试图将它们提供给Keras时,模型不收敛,均方误差在10^11区域。
我用来计算数据的函数没有任何非线性性质,所以我首先认为一层或两层就足够了。对于三层,MSE仍然在10^10的区域,我不知道我做错了什么。
回归应该返回三个绝对值,可以大于1-这就是为什么我没有使用softmax层。
我将非常感谢您的任何投入或帮助!
import numpy as np
from keras.models import *
from keras.layers import D
我想创建一个基于MLP的自定义CNN模型(多尺度),由几个并行的小网络(胶囊)组成。这些简单的小网络被实例化为每个卷积尺度(即3x3,5x5 )的自定义图层(conv2d->Flatten->Dense)。这些胶囊网络的目的是使用CNN模型产生中间损失意识,以减少总体损失。我写了一些粗略的代码,但我不能写正确的代码来使用这些胶囊计算局部损失。代码如下:
from tensorflow.keras import layers
import tensorflow as tf
from tensorflow.keras.datasets import mnist
from tensorf