【问题标题】:How to make a keras model take a (None,) tensor as Input如何使 keras 模型将(无,)张量作为输入
【发布时间】:2020-05-06 09:14:23
【问题描述】:

我正在使用 tf.keras API,我希望我的模型接受形状为 (None,) 的输入,None 是 batch_size。

keras.layers.Input() 的shape 不包含batch_size,所以我认为不能使用。

有没有办法实现我的目标?我更喜欢没有tf.placeholder 的解决方案,因为它已被弃用

顺便说一句,我的模型是一个句子嵌入模型,所以我希望输入类似于 ['How are you.','Good morning.']

======================= 更新:

目前,我可以使用layers.Input(dtype=tf.string,shape=1) 创建一个输入层,但这需要我的输入类似于[['How are you.'],['Good morning.']]。我希望我的输入只有一维。

【问题讨论】:

  • Keras 模型的输入总是有一个批处理维度,所以想要删除这个维度是没有意义的,框架不支持。
  • @MatiasValdenegro 我不想删除批量维度,我想要的是让我的输入成为一个简单的字符串。
  • 一批字符串是有意义的,单个字符串不是一个好的输入(因为它错过了批量维度)。
  • 是的,我的意思是训练时的一批字符串。

标签: tensorflow keras tensorflow2.0 tf.keras


【解决方案1】:

你试过tf.keras.layers.Input(dtype=tf.string, shape=())吗?

【讨论】:

  • 谢谢,这就是我想要的,你成就了我的一天!
【解决方案2】:

如果您想设置特定的批量大小,tf.keras.Input() 实际上包含一个batch_size 参数。但是默认情况下,批量大小假定为None,因此您甚至不需要更改任何内容。

现在,您似乎真正想要的是能够提供可变长度的样本(句子)。好消息! tf.keras.layers.Embedding 层允许您执行此操作,尽管您必须首先为您的句子生成编码。 Tensorflow 网站上有一个很好的tutorial 过程。

【讨论】:

  • 这不是我想要的,我已经更新了我的问题以使其更清楚。
猜你喜欢
  • 2019-11-17
  • 1970-01-01
  • 1970-01-01
  • 2022-01-08
  • 1970-01-01
  • 1970-01-01
  • 2022-01-14
  • 2021-06-18
  • 2021-10-07
相关资源
最近更新 更多