小编pho*_*ing的帖子

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

我正在使用Keras和TensorFlow后端来构建和运行神经网络.我需要在丢失函数的输出张量上使用numpy函数.更具体地说,我的损失函数涉及找到最近的邻居,为此需要将cras函数用于ckdTree.我尝试使用输出张量转换为numpy数组K.eval().但是,InvalidArgument当我尝试编译模型时,这会引发错误,我相信,因为您无法eval()在符号变量上运行.

这是一个玩具代码片段,可以重现此错误.

import numpy as np
from keras import backend as K
from keras.models import Sequential
from keras.layers.core import Flatten, Dense, Reshape
from keras.optimizers import Adam

def loss(y_true, y_pred):

    y_pred_numpy = K.eval(y_pred)
    # perform some numpy operations on y_pred_numpy
    return K.constant(0)

''' Model '''

input_shape = (10,10,10,3)
train_images = np.zeros((1,10,10,10,3))
train_labels = np.zeros((1,1,1,1,3))

model = Sequential()
model.add(Flatten(input_shape=input_shape))
model.add(Dense(3000, use_bias=True, bias_initializer='zeros'))
model.add(Reshape((10,10,10,3)))
model.summary()

opt = Adam(lr=1E-4)
model.compile(optimizer=opt, loss=loss)
Run Code Online (Sandbox Code Playgroud)

以上给出了以下错误:

InvalidArgumentError (see …
Run Code Online (Sandbox Code Playgroud)

python numpy deep-learning keras tensorflow

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

如何将PyTorch的torch.inverse()函数应用于批处理中的每个样本?

这似乎是一个基本问题,但我无法解决这个问题.

在我的神经网络的前向传递中,我有一个8x3x3形状的输出张量,其中8是我的批量大小.我们可以假设每个3x3张量是非奇异矩阵.我需要找到这些矩阵的逆.PyTorch inverse()函数仅适用于方形矩阵.由于我现在有8x3x3,如何以可区分的方式将此功能应用于批处理中的每个矩阵?

如果我遍历样本并将反转追加到python列表,然后我将其转换为PyTorch张量,那么在backprop期间它是否会出现问题?(我问,因为将PyTorch张量转换为numpy以执行某些操作然后返回张量将不会在backprop期间为此类操作计算渐变)

当我尝试做类似的事情时,我也会收到以下错误.

a = torch.arange(0,8).view(-1,2,2)
b = [m.inverse() for m in a]
c = torch.FloatTensor(b)
Run Code Online (Sandbox Code Playgroud)

TypeError:'torch.FloatTensor'对象不支持索引

python pytorch

5
推荐指数
2
解决办法
9583
查看次数

在Python中计算图像中不同颜色的对象数

这是一张我要从中计算每种颜色的对象数的图表。什么是不使用opencv的简单方法?

[编辑2]: 我尝试过的方法如下:(1)有色物体计数

from PIL import Image
im = Image.open('./colored-polka-dots.png').getcolors()
im.sort(key=lambda k: (k[0]), reverse=True)
print('Top 5 colors: {}'.format((im[:5])))

# View non-background colors
color_values = []
for color in im[1:5]:
    color_values.append(color[1])
    arr = np.asarray(color[1]).reshape(1,1,4).astype(np.uint8)
    plt.imshow(arr)
    plt.show() # get top 4 frequent colors as green,blue,pink,ornage

# Create a dict of color names and their corressponding rgba values
color_dict = {}
for color_name,color_val in zip(['green','blue','pink','orange'],color_values):
    color_dict[color_name] = color_val

# Make use of ndimage.measurement.labels from scipy 
# to get the number …
Run Code Online (Sandbox Code Playgroud)

python opencv scipy python-imaging-library scikit-image

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