在 tf.keras 和 tf.js 中完全错误的推断结果

我在 tf.js 的 GitHub 上同样提出了 issue,模型文件有点大,就不在论坛上上传了,可以从这里获取

我在 python 中训练了 Keras Sequential 模型,并使用 tensorflowjs_converters 将其转换为 tf.js 模型。但我发现 python 和 tf.js 中的推断结果是完全错误的。

Python infer

from keras.models import load_model

model = load_model ('keras.h5')

test = np.genfromtxt ('voice.txt', delimiter=',', dtype=np.float32)

test = test.reshape (1, 100, 1024, 1)
test -= 128
test /= 128.0

pred = model.predict (test)
print (pred)

tf.js infer

async function start () {
    model = await tf.loadModel ('model2/model.json')
    model.summary ()
    const pred = model.predict (tf.zeros ([1, 100, 1024, 1]))
}
start ()
let input_tensor = tf.tensor (values=intArray);

var tensorValue = input_tensor.dataSync ()

for (var i = 0; i < intArray; i++){
    if (intArray != tensorValue){
        console.log ('Wrong!')
    }
}
const reshaped_tensor = input_tensor.reshape ([1, 100, 1024, 1]).toFloat ();
const divided_tensor = reshaped_tensor.sub (tf.scalar (128)).div (tf.scalar (128))
divided_tensor.print (true)
var pred = model.predict (divided_tensor).dataSync ()
console.log (pred)

var “intArray” 是输入数据,它的形状是 [100.1024],dtype 是 int32(我在数据处理中将它转换为 float32)

image

我使用了相同的输入数据,这是推断结果:


提问人:AngelZheng,发表在 2018-10-12 10:05:35

建议每一层跑跑 拿 weights 看输出 具体定位问题
另外看一下输入输出的预处理


舟 3332 发表于 2018-10-15 18:25:46