Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sorting 使用Keras中的Lambda层对值进行排序_Sorting_Keras_Lambda_Layer - Fatal编程技术网

Sorting 使用Keras中的Lambda层对值进行排序

Sorting 使用Keras中的Lambda层对值进行排序,sorting,keras,lambda,layer,Sorting,Keras,Lambda,Layer,我正在构建一个DNN,在对这些值进行排序后,我需要将这些值从一个隐藏层传递到下一个隐藏层。我正在考虑使用Lambda层进行排序,但是在编译时它会给我带来错误。下面是一个简单的代码来说明这个问题 x = np.array([[0.3, 0.2, 0.7, 0.4], [0.5, 0.3, 0.3, 0.4], [0.1, 0.9, 0.4, 0.4], [0.3, 0.4, 0.1, 0.2],

我正在构建一个DNN,在对这些值进行排序后,我需要将这些值从一个隐藏层传递到下一个隐藏层。我正在考虑使用Lambda层进行排序,但是在编译时它会给我带来错误。下面是一个简单的代码来说明这个问题

x = np.array([[0.3, 0.2, 0.7, 0.4], 
              [0.5, 0.3, 0.3, 0.4], 
              [0.1, 0.9, 0.4, 0.4], 
              [0.3, 0.4, 0.1, 0.2], 
              [0.8, 0.3, 0.2, 0.3]])
y = np.array([1,0,1,0,1])

x = x.reshape(-1, 1, 4)
y = y.reshape(-1, 1, 1)
上面的“x”是我的输入,我想按升序对值进行排序,然后将其传递给前馈网络。请注意,在我的原始问题中,“x”值来自上一个隐藏层,它们不是输入值。为了便于说明,我在这里将它们显示为输入值。 这是我的简单神经网络

from keras.models import Input
from keras.models import Model
from keras.layers import Dense
from keras.layers import Lambda
from keras import optimizers
import tensorflow as tf

def sortInput(x):    
    sorted_x = tf.sort(x, axis=-1, direction='ASCENDING', name=None)
    #sorted_x = sorted_x.reshape(-1,1)
    return(sorted_x)

inp = Input(shape=(1, 4))
sorted_inp = Lambda(sortInput)(inp)
ie = Dense(10, activation="relu")(sorted_inp)
oup = Dense(1, activation="sigmoid")(ie)

mini_mdl = Model(inputs = inp, outputs = oup)

adam_optimizer = optimizers.adam(learning_rate = 0.01)

mini_mdl.compile(loss='binary_crossentropy', optimizer=adam_optimizer, metrics=['accuracy'])

上述代码在编译过程中失败。您能帮我解决这个问题吗?

将排序调用中的轴值从-1更改为1已经解决了这个问题。所以这行应该是这样的:

sorted_x = tf.sort(x, axis=1, direction='ASCENDING', name=None)