sorting - 在 Keras 中使用 Lambda 层对值进行排序
问题描述
我正在构建一个 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'])
上面的代码在编译过程中失败。你能帮我解决这个问题吗?
解决方案
在 sort 调用中将轴值从 -1 更改为 1 已解决问题。所以该行应如下所示:
sorted_x = tf.sort(x, axis=1, direction='ASCENDING', name=None)
推荐阅读
- python - googletrans - 获得与输入相同的输出
- apache-kafka - Kafka 消费者是否收到已刷新(fsynched)到磁盘的消息?
- android - 如何拥有具有恒定提示和图标以及可编辑提示的编辑文本?
- kivymd - kivymd 0.104.2dev:MDGridBottomSheet 项目调用回调函数两次
- node.js - 将 Express 应用程序部署到 Azure 应用程序服务没有响应端口上的 HTTP ping:8080
- java - 处理(Java):当函数的幅度增加时,如何使绘制的正弦函数看起来是连续的而不是单独的点
- css - 仅在 CSS 中具有“3 列和 4 个状态”的网站
- android - 从 Google Play 首次安装时未运行 Android 房间迁移
- javascript - Chrome contenteditable=false in contenteditable=true 输入中文问题
- oauth-2.0 - oauth2 中的资源所有者密码授予流程是否有其他替代方法?