Tensorflow动态RNN(LSTM):如何格式化输入?

2024-04-12

我已获得这种格式的一些数据以及以下详细信息:

person1, day1, feature1, feature2, ..., featureN, label
person1, day2, feature1, feature2, ..., featureN, label
...
person1, dayN, feature1, feature2, ..., featureN, label
person2, day1, feature1, feature2, ..., featureN, label
person2, day2, feature1, feature2, ..., featureN, label
...
person2, dayN, feature1, feature2, ..., featureN, label
...
  • 总是有相同数量的特征,但每个特征可能是 0 代表什么都没有
  • 每个人的可用天数各不相同,例如person1 有 20 天的数据,person2 有 50 天的数据

The goal是预测第二天该人的标签,因此第 N+1 天的标签,无论是在每个人的基础上,还是在总体上(每个人对我来说更有意义)。我可以自由地重新格式化数据(数据不大)。基于上述内容,经过一番阅读后,我认为动态 RNN (LSTM) 效果最好:

  • 循环神经网络:因为第二天依赖于前一天
  • lstm:因为模型每天都在建立
  • 动态:因为并非所有功能每天都会出现

如果这对我所拥有的数据没有意义,请在这里阻止我。 那么问题是:

如何为tensorflow/tflearn提供/格式化这些数据?

我看过this https://github.com/tflearn/tflearn/blob/master/examples/nlp/dynamic_lstm.py使用 tflearn 的示例,但我不理解它的输入格式,因此我可以将它“镜像”到我的。同样,也发现了this https://stackoverflow.com/questions/39324520/understanding-tensorflow-lstm-input-shape发布了一个非常相似的问题,但发帖者的样本之间似乎并不像我的样本那样相互关联。我对张量流的经验仅限于它开始吧 https://www.tensorflow.org/get_started/get_started page.


动态:因为并非所有功能每天都会出现

你在这里对动态的概念有错误。 Tensorflow 中的动态 RNN 意味着图表是在执行过程中动态创建的,但输入的大小始终相同(0 表示缺少某个功能应该可以正常工作)。

不管怎样,你在这里得到的是不同长度(day1 ... day?)的特征向量(feature1 ... featureN)的序列。首先,你需要一个LSTM 单元 https://www.tensorflow.org/api_docs/python/tf/contrib/rnn/LSTMCell

cell = tf.contrib.rnn.LSTMcell(size)

因此您可以使用以下命令创建动态展开的 rnn 图tf.nn.dynamic_rnn https://www.tensorflow.org/api_docs/python/tf/nn/dynamic_rnn。来自文档:

输入:RNN 输入。

如果 time_major == False (默认),则这必须是形状为 [batch_size, max_time, ...] 的张量,或此类元素的嵌套元组。

其中 max_time 指输入序列长度。因为我们使用的是dynamic_rnn,所以不需要在编译时定义序列长度,因此您的输入占位符可以是:

x = tf.placeholder(tf.float32, shape=(batch_size, None, N))

然后将其输入 rnn 中,例如

outputs, state = tf.nn.dynamic_rnn(cell, x)

这意味着您的输入数据应该具有以下形状(batch_size, seq_length, N)。如果一批中的示例具有不同的长度,则应使用 0 向量将它们填充到最大长度,并传递适当的sequence_length参数为dynamic_rnn

显然我跳过了很多细节,因此要完全理解 RNN,您可能应该阅读许多优秀的 RNN 教程之一,例如this one http://r2rt.com/recurrent-neural-networks-in-tensorflow-i.html例如。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Tensorflow动态RNN(LSTM):如何格式化输入? 的相关文章

随机推荐

  • 使用 StackLayout 进行标签换行

    我正在使用 Xamarin 并使用 XAML 创建视图 但我一生都无法让这个标签按照我想要的方式包装 如果标签到达屏幕边缘 我希望它像这样换行 现在它看起来像这样 这是我的代码
  • 使用 Python 导出 Tensorflow 网络并在不使用 Bazel 的情况下使用 C++ 导入

    使用 TensorFlow 我尝试在 C 文件中加载我在 Python 中训练的网络 我正在保存带有输入张量的网络x和输出张量y在 Python 上 with tf Session graph tf Graph as sess tf sav
  • facebook opengraph 中的推断属性是什么意思 [重复]

    这个问题在这里已经有答案了 可能的重复 在对象调试器中得到错误的 ogtype https stackoverflow com questions 9953779 get wrong ogtype in object debugger 我有
  • 从角度服务通过管道传输时,rxjs catchError 不起作用

    使用 redux 和 Angular 我有以下效果 Effect public authenticate Observable
  • 如何分割字节数组

    我在内存中有一个字节数组 从文件中读取 我想在某个点 索引 分割字节数组 而不必只创建一个新的字节数组并一次复制每个字节 从而增加操作的内存占用 我想要的是这样的 byte largeBytes 1 2 3 4 5 6 7 8 9 byte
  • 如何使用DialogFragment和FragmentManager制作DatePicker?

    所以我已经在这个问题上有一段时间了 但我似乎无法弄清楚 我对 Android 开发还很陌生 所以请耐心等待 我对创建日期选择器不太熟悉 我学会了以不推荐使用的方式来完成它 只是为了掌握它的窍门 使用本教程来帮助我加快速度 http deve
  • 使用 CLI 时如何将 Java 类添加到 Worklight 适配器

    我正在尝试将 Java 类添加到我的适配器 如教程中所述在适配器中使用 Java http public dhe ibm com software mobile solutions worklight docs v620 04 12 Usi
  • 当鼠标悬停在放置目标上时如何更改拖放光标

    我有一个应用程序 其中包含一个取消归档 文件属性 文件的放置目标 我想将表单的 DragEnter 事件中的鼠标光标更改为我作为嵌入资源的自定义光标 cur 放置目标是带有目标图像的透明形式 整个表格是放置目标 我知道当我控制拖动源时可以使
  • 通过 AJAX 将动态字段添加到嵌套表单

    我一直在我的应用程序上观看和重现这些轨道广播 196 嵌套模型表单第 1 部分 http railscasts com episodes 196 nested model form part 1 and 197 嵌套模型形式 第 2 部分
  • 如何在 R 中堆叠数据框[重复]

    这个问题在这里已经有答案了 我有一个数据框 我想将其堆叠在 R 中 这样我最终会得到三列 下面是当前格式的一些示例数据 gt dput df structure list Day c d1 d2 d3 d4 d5 d6 d7 d8 d9 d
  • 使用 Java 代理将类添加到类路径

    我正在使用 Java Agent 和 Javassist 向某些 JDK 类添加一些日志记录 本质上 当系统加载一些 TLS 类时 Javassist 会向它们添加一些额外的字节码 以帮助我调试一些连接问题 考虑到此类包含在代理 jar 中
  • “poly()”如何生成正交多项式?如何理解返回的“coefs”?

    我对正交多项式的理解是它们采用以下形式 y x a1 a2 x c1 a3 x c2 x c3 a4 x c4 x c5 x c6 最多达到所需的术语数 where a1 a2 etc是每个正交项的系数 拟合之间有所不同 并且c1 c2 e
  • vim - 从 vim 撤消文件恢复丢失的文件

    我不小心删除了 vimrc 这花了我几周的时间来配置 我仍然保留撤消文件 我认为这是恢复它的唯一方法 不幸的是 vim 现在不允许我撤消 我猜是因为我当前的 vimrc 版本无法使用最后一个撤消步骤 修补 另外 vim 撤消文件是经过编码的
  • 如何在最后一个单元格上启动 UITableView?

    在Apple的消息应用程序中 当您单击通讯员的姓名并切换到对话的表格视图 每条消息都有气球 时 表格会一直滚动到最后 没有动画或任何东西 它就在那里 同样 在 Tweetie 2 中 当您加载推文视图时 它会出现在您上次查看的位置 没有动画
  • 检查列表是否包含类型?

    检查列表中是否存在某种类型的最快方法是什么 我希望我能做到以下几点 class Generic object def class SubclassOne Generic def class SubclassOne Generic def t
  • 如何处理 MVC 中的页面流(特别是 asp.net)

    如果您必须在 mvc 中提供类似于表单输入体验的向导 您将如何抽象页面流 研究重定向后获取模式 http weblogs asp net mhawley archive tags MVC default aspx http weblogs
  • sql 按日期分组,不带时间

    我是 sql 新手 我想创建一个查询来计算我每天的所有文章 ID 但问题是日期列也包含时间 那么我如何才能使查询仅按日期分组而无需时间 例如 id article id date timestamp 1 22 2014 01 10 13 3
  • GIT 不跟踪文件

    我已经在 AIX 6 1 上设置了 GIT 但遇到了问题 我遵循的步骤顺序如下所示 我创建一个文件夹 进入文件夹并初始化非裸存储库 初始化用户名和用户电子邮件 创建一个名为index html 的文件 并在该文件中包含一些数据 创建一个名为
  • 对小数的最快素数测试

    我在业余时间玩了 Euler 项目 现在我需要做一些重构 我已经实施了 Miller Rabin 以及一些筛子 我以前听说过 对于较小的数量 例如数百万以下 筛子实际上更快 有人有这方面的信息吗 谷歌并没有多大帮助 Yes you ll f
  • Tensorflow动态RNN(LSTM):如何格式化输入?

    我已获得这种格式的一些数据以及以下详细信息 person1 day1 feature1 feature2 featureN label person1 day2 feature1 feature2 featureN label person