- 我按照建议设置了numpy和tensorflow的随机种子。
- 生成一些数据 - 这部分是可重复的,总是给出相同的结果。
- 创建一个简单的神经网络并进行预测(没有训练,只是使用随机权重)-每次预测都不同
import numpy as np
from tensorflow.keras.layers import Dense, Dropout
from tensorflow.keras import Sequential, optimizers
import tensorflow as tf
np.random.seed(32)
tf.set_random_seed(33)
random_data = np.random.rand(10, 2048)
print(random_data[:,0])
def make_classifier():
model = Sequential()
model.add(Dense(1024, activation='relu', input_dim=2048))
model.add(Dropout(0.5))
model.add(Dense(1, activation='sigmoid'))
model.compile(optimizer=optimizers.RMSprop(lr=2e-4),
loss='binary_crossentropy')
return model
model = make_classifier()
# model.summary()
model.predict(random_data)
当我重新运行整个单元格时,print语句总是输出
[0.85888927 0.23846818 0.17757634 0.07244977 0.71119893 0.09223853 0.86074647 0.31838194 0.7568638 0.38197083]
。然而,预测每次都不同:array([[0.5825965 ],
[0.8677979 ],
[0.70151913],
[0.64572096],
[0.78101623],
[0.76483005],
[0.7946336 ],
[0.6281612 ],
[0.8208673 ],
[0.8273002 ]], dtype=float32)
array([[0.51012236],
[0.6562015 ],
[0.5593666 ],
[0.686155 ],
[0.6488372 ],
[0.5966359 ],
[0.6236731 ],
[0.58099884],
[0.68447435],
[0.58886844]], dtype=float32)
等等等。
- 如何为刚初始化的网络获得可重现的预测结果?
- 权重初始化是在什么时候发生的?是在编译模型时还是其他时候?