我使用tensorflow_probability和distributions训练模型。
为了训练它,我将数据格式化为这样(2个头模型,因此2个输入集):
input_1 = tf.data.Dataset.from_tensor_slices(Xdata)
input_2 = tf.data.Dataset.from_tensor_slices(Xphysio)
output = tf.data.Dataset.from_tensor_slices(yobs)
combined_dataset = tf.data.Dataset.zip(((input_1, input_2), output))
input_dataset = combined_dataset.batch(30)
培训工作做得很好…但是当我尝试在单元格#15的exemple中进行推断时,他们会这样调用模型:
yhats = model(combined_dataset)
我得到了错误
TypeError: Inputs to a layer should be tensors. Got: <ZipDataset element_spec=((TensorSpec(shape=(120, 9), dtype=tf.float32, name=None), TensorSpec(shape=(24,), dtype=tf.float32, name=None)), TensorSpec(shape=(), dtype=tf.float32, name=None))>
我试着:
yhats = model([input_1, input_2])
得到了同样的错误:
TypeError: Inputs to a layer should be tensors. Got: <TensorSliceDataset element_spec=TensorSpec(shape=(120, 9), dtype=tf.float32, name=None)>
使用yhats = model.predict([Xdata, Xphysio])
运行良好,但似乎没有返回有效的tfd格式。分布:
assert isinstance(yhat, tfd.Distribution):
Traceback (most recent call last):
File "E:\Windows programs\PyCharm Community Edition 2021.3.1\plugins\python-ce\helpers\pydev\_pydevd_bundle\pydevd_exec2.py", line 3, in Exec
exec(exp, global_vars, local_vars)
File "<input>", line 1, in <module>
AssertionError
1条答案
按热度按时间f2uvfpb91#
最后需要使用tensorflow 2.13,我是2.10。我像往常一样使用pip代替conda进行升级,所有工作都很好。