मैं इस पेज पर कोड को लेकर असमंजस में हूं।

प्रश्न 1)

नीचे दिया गया कोड ब्लॉक उस पेज से आउटपुट दिखाता है। इस चरण से पहले मुझे ऐसा कोई कोड दिखाई नहीं देता जो model.fit फ़ंक्शन का उपयोग करके हमारे डेटा को प्रशिक्षित करता हो। तो नीचे दिया गया कोड क्या है? क्या वे यादृच्छिक भार का उपयोग करके भविष्यवाणियां दिखाते हैं?

model.predict(train_features[:10])

array([[0.6296253 ],
       [0.82509124],
       [0.75135857],
       [0.73724824],
       [0.82174015],
       [0.33519754],
       [0.6719973 ],
       [0.30910844],
       [0.6378555 ],
       [0.8381703 ]], dtype=float32)

model = make_model(output_bias = initial_bias)
model.predict(train_features[:10])

array([[0.00124893],
       [0.00185736],
       [0.00164955],
       [0.00123761],
       [0.00137692],
       [0.00182851],
       [0.00170887],
       [0.00239349],
       [0.0024704 ],
       [0.00517672]], dtype=float32)


results = model.evaluate(train_features, train_labels, batch_size=BATCH_SIZE, verbose=0)
print("Loss: {:0.4f}".format(results[0]))

Loss: 0.0157

प्रश्न 2)

नीचे दिए गए कोड में जारी है। initial_weights क्या हैं? क्या वे यादृच्छिक मूल्य हैं?

initial_weights = os.path.join(tempfile.mkdtemp(),'initial_weights')
model.save_weights(initial_weights)

प्रश्न 3)

तब वे कहते हैं कि

Before moving on, confirm quick that the careful bias initialization actually helped.Train the model for 20 epochs, with and without this careful initialization, and compare the losses:

, लेकिन मुझे यकीन नहीं है कि वे शुरुआती पूर्वाग्रह कैसे दे रहे हैं। मैं समझता हूं कि हम वस्तु zero_bias_history के लिए 0 पूर्वाग्रह निर्दिष्ट करते हैं। लेकिन हम careful_bias_history के लिए पूर्वाग्रह कैसे निर्धारित करते हैं? क्या इसका पूर्वाग्रह initial_bias के बराबर नहीं होना चाहिए। careful_bias_history को बायस वैल्यू कैसे मिलती है? मुझे लगा कि careful_bias_history को उस मॉडल से बनाया जाना चाहिए जिसे model = make_model(output_bias = initial_bias) का उपयोग करके बनाया गया था

### Confirm that the bias fix helps

Before moving on, confirm quick that the careful bias initialization actually helped.

Train the model for 20 epochs, with and without this careful initialization, and compare the losses: 

model = make_model()
model.load_weights(initial_weights)

model.layers[-1].bias.assign([0.0])
zero_bias_history = model.fit(
    train_features,
    train_labels,
    batch_size=BATCH_SIZE,
    epochs=20,
    validation_data=(val_features, val_labels), 
    verbose=0)

print (type(model))
#model.load_weights()

model = make_model()
model.load_weights(initial_weights)
careful_bias_history = model.fit(
    train_features,
    train_labels,
    batch_size=BATCH_SIZE,
    epochs=20,
    validation_data=(val_features, val_labels), 
    verbose=0)
0
user2543622 23 जिंदा 2020, 04:12

1 उत्तर

सबसे बढ़िया उत्तर

उत्तर १: हां, ये भविष्यवाणियां मॉडल से संकलन के बाद लेकिन प्रशिक्षण से पहले की हैं।

उत्तर २: हाँ, वे यादृच्छिक भार हैं, उदाहरण के लिए, घनी परत में उन्हें glorot_uniform का उपयोग करके प्रारंभ किया जाता है। tf.keras.layers.Dense< /ए>

उत्तर ३: ऊपर हमने जो मॉडल सहेजा है, उसमें np.log([pos/neg]) का उपयोग करके एक पूर्वाग्रह शुरू किया गया था, इसका उल्लेख है यहां.

इसलिए, zero_bias_history में, उन्होंने model.layers[-1].bias.assign([0.0]) का उपयोग करके शून्य के साथ पूर्वाग्रह शुरू किया, और careful_bias_history में उन्होंने केवल सहेजे गए मॉडल को लोड किया जिसमें पहले से ही प्रारंभिक पूर्वाग्रह था।

1
Rishabh Sahrawat 23 जिंदा 2020, 10:54