【问题标题】:How to get rid of the "UserWarning: The initializer GlorotUniform is unseeded" message?如何摆脱“用户警告:初始化程序 GlorotUniform 未播种”消息?
【发布时间】:2022-10-07 02:52:48
【问题描述】:

我有以下代码: Bias-Variance Decomposition for Model Assessment

import matplotlib.pyplot as plt
import numpy as np

import tensorflow as tf
from tensorflow.keras.layers import Dense
from tensorflow.keras.models import Sequential

from mlxtend.evaluate import bias_variance_decomp
from mlxtend.data import boston_housing_data

from sklearn.tree import DecisionTreeRegressor
from sklearn.ensemble import BaggingRegressor
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error

np.random.seed(16)
tf.random.set_seed(16)

X, y = boston_housing_data()
X_train, X_test, y_train, y_test = train_test_split(X, y,
                                                test_size=0.3,
                                                random_state=123,
                                                shuffle=True)

model = Sequential()
model.add(Dense(2048, activation=\'relu\'))
model.add(Dense(512, activation=\'relu\'))
model.add(Dense(32, activation=\'relu\'))
model.add(Dense(1, activation=\'linear\'))

optimizer = tf.keras.optimizers.Adam()
model.compile(loss=\'mean_squared_error\', optimizer=optimizer)
model.fit(X_train, y_train, epochs=100, batch_size=32, verbose=0)
mean_squared_error(model.predict(X_test), y_test)

avg_expected_loss, avg_bias, avg_var = bias_variance_decomp(
    model, X_train, y_train, X_test, y_test, 
    loss=\'mse\',
    num_rounds=100,
    random_seed=16,
    epochs=100,
    batch_size=32,
    verbose=0)

print(\'Average expected loss: %.3f\' % avg_expected_loss)
print(\'Average bias: %.3f\' % avg_bias)
print(\'Average variance: %.3f\' % avg_var)

守则有效。但是,它会产生一个烦人的警告:

UserWarning: 初始化器 GlorotUniform 未播种并被多次调用,每次都将返回相同的值(即使初始化器未播种)。请更新您的代码以向初始化程序提供种子,或避免多次使用相同的初始化程序实例。 警告.warn(

为了摆脱警告,需要对代码进行哪些更改?

    标签: python keras mlxtend


    【解决方案1】:

    正如警告消息所说,需要向初始化程序提供 ssed。只需将代码更改为:

    import matplotlib.pyplot as plt
    import numpy as np
    
    import tensorflow as tf
    from tensorflow.keras.layers import Dense
    from tensorflow.keras.models import Sequential
    
    from mlxtend.evaluate import bias_variance_decomp
    from mlxtend.data import boston_housing_data
    
    from sklearn.tree import DecisionTreeRegressor
    from sklearn.ensemble import BaggingRegressor
    from sklearn.model_selection import train_test_split
    from sklearn.metrics import mean_squared_error
    
    from keras import initializers
    
    np.random.seed(16)
    tf.random.set_seed(16)
    
    X, y = boston_housing_data()
    X_train, X_test, y_train, y_test = train_test_split(X, y,
                                                    test_size=0.3,
                                                    random_state=123,
                                                    shuffle=True)
    
    model = Sequential()
    model.add(Dense(2048, activation='relu', 
    kernel_initializer=initializers.glorot_uniform(seed=0)))
    model.add(Dense(512, activation='relu', 
    kernel_initializer=initializers.glorot_uniform(seed=0)))
    model.add(Dense(32, activation='relu', 
    kernel_initializer=initializers.glorot_uniform(seed=0)))
    model.add(Dense(1, activation='linear', 
    kernel_initializer=initializers.glorot_uniform(seed=0)))
    
    optimizer = tf.keras.optimizers.Adam()
    model.compile(loss='mean_squared_error', optimizer=optimizer)
    model.fit(X_train, y_train, epochs=100, batch_size=32, verbose=0)
    mean_squared_error(model.predict(X_test), y_test)
    
    avg_expected_loss, avg_bias, avg_var = bias_variance_decomp(
        model, X_train, y_train, X_test, y_test, 
        loss='mse',
        num_rounds=10,
        random_seed=16,
        epochs=10,
        batch_size=32,
        verbose=0)
    
    print('Average expected loss: %.3f' % avg_expected_loss)
    print('Average bias: %.3f' % avg_bias)
    print('Average variance: %.3f' % avg_var)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-24
      • 1970-01-01
      • 2016-02-04
      • 1970-01-01
      • 1970-01-01
      • 2020-02-09
      • 2015-02-02
      • 2020-12-16
      相关资源
      最近更新 更多