python - 有一种方法可以随机打乱 keras 层吗?
问题描述
我想在 keras NN(功能模式)的第一层添加一维输入数据的随机洗牌。
那可能吗?如果不可能,随机翻译将是第二好的。
我发现 keras 实现 了 keras.layers.experimental.preprocessing.RandomTranslation
但适用于 4D 数据,而我的数据是 1D
如果问题需要神经网络,我想随机打乱这个玩具网络的输入。
我试图用
input_layer = keras.layers.Input(input_shape)
randomTranslation=keras.layers.experimental.preprocessing.RandomTranslation(\
height_factor=1, width_factor=1, fill_mode='wrap',\
interpolation='nearest', seed=None, name=None)
input_layer=randomTranslation(input_layer)
但我收到错误“形状必须为 4 级但为 3 级”
Tensorflow 实现了 tf.random.shuffle,但是不知道能不能变成keras层。
解决方案
您可以将几乎任何 TF 函数变成 lyaer。对于功能模型和您的案例,假设您的输入是input
. 然后您可以执行以下操作:
input_transposed = tf.transpose(input, perm=[1,0])
input_shuffled_transposed = tf.random.shuffle(input_transposed)
input_shuffled = tf.transpose(input_shuffled_transposed, perm=[1,0])
需要第一个命令作为tf.random.shuffle
沿第一个维度的随机播放。在训练时,这将是批量维度。要对批处理中的数据而不是样本进行洗牌,可以简单地使用tf.transpose
“重命名”轴。
推荐阅读
- php - 如何使用 AJAX 向用户发送通知?
- python - 拖尾日志很慢
- ios - 如何按周获取与应用程序的用户连接数
- reactjs - React native - 对象在 firebase 版本 5.9.0 中作为 React 子项无效
- java - 更新 pdf 的文本,不能用阿拉伯语单词替换字符串 - itext Java
- c# - 用户代码 C#(ThumbCache.db 文件)未处理 Nullreferenceexception
- reactjs - 将 PDF.js 查看器与 React.js 库一起使用时未捕获(承诺)错误?
- c# - 如何仅将方法参数中对象的某些属性传递给 Fody/MethodTimer 拦截器
- kml - KML 文件可以包含简单的逻辑吗?
- php - 如何检查缺少哪些标题/文件以及为什么?