【发布时间】:2019-03-14 08:46:10
【问题描述】:
我在玩 tf.keras 并在两个具有相同权重初始化的 Model 对象上运行了一些 predict() 方法。
import numpy as np
import tensorflow as tf
from tensorflow.keras.layers import LSTM, Masking, Input, Embedding, Dense
from tensorflow.keras.models import Model
tf.enable_eager_execution()
np.random.seed(10)
X = np.asarray([
[0, 1, 2, 3, 3],
[0, 0, 1, 1, 1],
[0, 0, 0, 1, 1],
])
y = [
0,
1,
1
]
seq_len = X.shape[1]
inp = Input(shape=[seq_len])
emb = Embedding(4, 10, name='embedding')(inp)
x = emb
x = LSTM(5, return_sequences=False, name='lstm')(x)
out = Dense(1, activation='sigmoid', name='out')(x)
model = Model(inputs=inp, outputs=out)
model.summary()
preds = model.predict(X)
inp = Input(shape=[seq_len])
emb = Embedding(4, 10, name='embedding', weights=model.get_layer('embedding').get_weights()[0])(inp)
x = emb
x = LSTM(5, return_sequences=False, weights=model.get_layer('lstm').get_weights()[0])(x)
out = Dense(1, activation='sigmoid', weights=model.get_layer('out').get_weights()[0])(x)
model_2 = Model(inputs=inp, outputs=out)
model_2.summary()
preds_2 = model_2.predict(X)
print(preds, preds_2)
我不知道为什么,但两个预测的结果是不同的。当我运行print 函数时,我得到了这些。你可能会得到不同的东西。
[[0.5027414 ]
[0.5019673 ]
[0.50134844]] [[0.5007331]
[0.5002397]
[0.4996575]]
我想了解keras 的工作原理。任何解释将不胜感激。谢谢。
注意:这里不涉及任何学习。我不明白随机性从何而来。
【问题讨论】:
-
@Justice_Lords 我没有调用任何 model.fit()。我只是在初始化一个与其他模型具有相同权重的模型,并在
X上进行预测 -
我不明白为什么这被标记为与stackoverflow.com/questions/50659482/… 重复我没有训练模型或任何东西,所以我不明白随机性来自哪里。
标签: python tensorflow machine-learning keras