我正在使用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) 这似乎是一个基本问题,但我无法解决这个问题.
在我的神经网络的前向传递中,我有一个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'对象不支持索引
这是一张我要从中计算每种颜色的对象数的图表。什么是不使用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)