gpt4 book ai didi

python - Lambda 层中的自定义函数失败,无法将张量转换为 numpy

转载 作者:行者123 更新时间:2023-11-30 08:58:39 25 4
gpt4 key购买 nike

所以我尝试使用 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):
return tensor.eval(session=K.get_session())

def np2tensor(np):
return tf.convert_to_tensor(np.reshape((1,480,480,3)))

def calculate_dwt1(tensor):
np_input = tensor2np(tensor)
coeff = pywt.wavedec2((np_input[0,:,:,0]), 'db1', level=1)
return np2tensor(np.dstack((coeff[1][0],coeff[1][1],coeff[1][2])))




def network():

input = Input(shape=(960,960,1), dtype='float32')
conv1 = Convolution2D(64, (3,3), activation='relu', padding='same')(input)
conv1 = Convolution2D(64, (3,3), activation='relu', padding='same')(conv1)
pool1 = MaxPooling2D((2,2), strides=(2,2))(conv1)

conv2 = Convolution2D(128, (3, 3), activation='relu', padding='same')(pool1)
conv2 = Convolution2D(128, (3, 3), activation='relu', padding='same')(conv2)
lambda1 = Lambda(calculate_dwt1)(input)
me = merge((lambda1, conv2),mode='concat', concat_axis=3)
..
..

或者我可以在运行时获取自定义函数的结果并将其转换为张量并将其输入到我的网络中吗?

基本上,我正在尝试实现这个模型架构。 Model Architecture

最佳答案

事实上,您要求网络通过 a) 数组-> 张量转换和 b) 在数组上运行的黑盒函数进行反向传播。显然,它无法做到这一点并不奇怪。您需要使用标准(或自定义)TF/K 操作重写自定义函数,并将其应用于张量对象。然后,也只有这样,它才能够向后传播梯度并向前传播值。

关于python - Lambda 层中的自定义函数失败,无法将张量转换为 numpy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49569568/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com