TensorFlow Same Model 在 Colab 和本地返回不同的结果
Posted
技术标签:
【中文标题】TensorFlow Same Model 在 Colab 和本地返回不同的结果【英文标题】:TensorFlow Same Model returning different results in Colab and local 【发布时间】:2022-01-09 21:10:47 【问题描述】:我在 Colab 和本地(终端中的 python3)上运行相同的代码并得到非常不同的结果。
import pandas as pd
import tensorflow as tf
model = tf.keras.models.load_model('./my_saved_model')
inputs = pd.read_csv('./inputs.csv', index_col=0)
print(model.predict(inputs))
'./inputs.csv' 是一个包含输入数据的单行 pandas 数据框
'./my_saved_model' 是密集序列模型
对于 Colab,我将这些文件复制到本地笔记本目录中。 tf.__version__
在本地终端为 2.5.0,在 Colab 为 2.7.0。
在 Colab 上,打印输出为 array([[0.00000000e+00]], dtype=float32)
,这似乎不正确,而在本地终端上,打印输出为 array([[0.447962]], dtype=float32)
,这似乎是正确的。我尝试了其他输入数据行,每次 Colab 错误地返回 0 或 1,而本地终端正确返回 0 到 1 之间的值。
我不知道为什么会这样,除了 tensorflow 版本不向后兼容的可能性。
这是模型摘要,以防有帮助:
Layer (type) Output Shape Param #
- - -
normalization_3 (Normalizati (None, 101) 203
dense_2 (Dense) (None, 1) 102
- - -
Total params: 305
Trainable params: 102
Non-trainable params: 203
【问题讨论】:
【参考方案1】:确认 tensorflow 版本是导致错误的原因。我在 colab 中添加了 pip install tensorflow==2.5.0
(即使它是 not advised),一切正常。
很奇怪,tensorflow 2.x 不支持向后兼容。
【讨论】:
以上是关于TensorFlow Same Model 在 Colab 和本地返回不同的结果的主要内容,如果未能解决你的问题,请参考以下文章
具有 padding='SAME' 的 Tensorflow/Keras Conv2D 层表现异常
训练和验证模式 tensorflow 的 SAME 数据丢失不一致
tensorflow Conv2D 中的 padding='same' 到底是啥意思?是最小填充还是 input_shape == output_shape