我不知道如何在 opencv 中打开 dng 文件。该文件是在使用三星 Galaxy S7 的专业选项时创建的。使用这些选项时创建的图像是 dng 文件以及大小为 3024 x 4032 的 jpg(我相信这也是 dng 文件的尺寸)。
我尝试使用这里的答案(除了 3 种颜色而不是灰度),如下所示:
import numpy as np
fd = open("image.dng", 'rb')
rows = 4032
cols = 3024
colors = 3
f = np.fromfile(fd, dtype=np.uint8,count=rows*cols*colors)
im = f.reshape((rows, cols,colors)) #notice row, column format
fd.close()
Run Code Online (Sandbox Code Playgroud)
但是,我收到以下错误:
cannot reshape array of size 24411648 into shape (4032,3024,3)
Run Code Online (Sandbox Code Playgroud)
任何帮助,将不胜感激
我正在尝试在 Keras 中编写自定义损失函数,如下所示:Keras 中的自定义损失函数
我的自定义函数应该降低小于 25 的值的影响。为此,该函数将首先调用tf.clip_by_value
(因此,任何小于 25 的值都将变为 25)yTrue
和yPred
(如上面的链接所示)。接下来,为了减少这些值的影响,当一个值 inyTrue
等于 25 时,将对应的值yPred
改为
yPred[i] - (yPred[i] - yTrue[i])/2
。最后,该函数将在这两个张量上返回“binary_crossentropy”的结果。
我有两个主要问题:
在此先感谢您的帮助
我正在使用 tensorflow 作为后端为 keras 创建自定义损失函数。为此,我想尝试类似于此处显示的内容:以 y_true 将取决于 y_pred 的方式自定义 Keras 的损失函数
但是,在运行脚本时(取自 Van):
import theano
from keras import backend as K
from keras.layers import Dense
from keras.models import Sequential
def customized_loss(y_true, y_pred):
loss = K.switch(K.equal(y_true, -1), 0, K.square(y_true-y_pred))
return K.sum(loss)
if __name__ == '__main__':
model = Sequential([ Dense(3, input_shape=(4,)) ])
model.compile(loss=customized_loss, optimizer='sgd')
import numpy as np
x = np.random.random((1, 4))
y = np.array([[1,-1,0]])
output = model.predict(x)
print output
# [[ 0.47242549 -0.45106074 0.13912249]]
print model.evaluate(x, y) # keras's loss …
Run Code Online (Sandbox Code Playgroud)