Python 传递将DICT返回给Keras的tf.data.Dataset 背景
据我所知,Keras将成为编写急切/懒惰的不可知论模型的首选方式。Keras()似乎也支持Python 传递将DICT返回给Keras的tf.data.Dataset 背景,python,tensorflow,keras,Python,Tensorflow,Keras,据我所知,Keras将成为编写急切/懒惰的不可知论模型的首选方式。Keras()似乎也支持tf.data,这很好,因为这是我当前tf.estimator项目使用的ETL 问题 我想保留我的tf.data管道,但用tf.keras.Model替换我的tf.estimator,但是在移植我的图形后,我被一个 ValueError: Please do not pass a dictionary as model inputs. 调用model.fit(dataset,steps\u per\u e
tf.data
,这很好,因为这是我当前tf.estimator
项目使用的ETL
问题
我想保留我的tf.data
管道,但用tf.keras.Model
替换我的tf.estimator
,但是在移植我的图形后,我被一个
ValueError: Please do not pass a dictionary as model inputs.
调用model.fit(dataset,steps\u per\u epoch=n)
时,我觉得这很奇怪,因为tf.data
/tf.estimator
是为使用(功能:dict,标签:dict)
而构建的,其中dict中的值是张量
总结
如何将
tf.keras.Model
用于dicts?临时解决方法是使用张量元组而不是dicts,例如通过调用
def flatten(dataset):
return dataset.map(lambda features, labels: (tuple(features.values()), tuple(labels.values())))
在model.fit
之前,确保model.call
通过索引而不是键(例如返回元组(outputs.values())
等)
不幸的是:
上述黑客只适用于训练数据。对于model.fit(validation\u data=flant(validation\u dataset),…)
由于一些内部错误,它将无法工作:与您的情况类似吗?