मैं प्रेसेबल मॉडल (जो कि डेटासेट पर भी प्रशिक्षित किया गया था) का उपयोग करके पास्कल वीओसी २०१ पर देयरपलाव ३ + के इस केर कार्यान्वयन को प्रशिक्षित करने का प्रयास कर रहा हूं ।
मुझे सटीकता के साथ अजीब परिणाम मिले, जल्दी से 1.0 में परिवर्तित:
5/5 [==============================] - 182s 36s/step - loss: 26864.4418 - acc: 0.7669 - val_loss: 19385.8555 - val_acc: 0.4818
Epoch 2/3
5/5 [==============================] - 77s 15s/step - loss: 42117.3555 - acc: 0.9815 - val_loss: 69088.5469 - val_acc: 0.9948
Epoch 3/3
5/5 [==============================] - 78s 16s/step - loss: 45300.6992 - acc: 1.0000 - val_loss: 44569.9414 - val_acc: 1.0000
मॉडल का परीक्षण भी 100% सटीकता देता है।
मैंने प्रशिक्षण से पहले और बाद में यादृच्छिक छवियों के एक ही सेट पर भविष्यवाणियों को साजिश करने का फैसला किया, और पाया कि मॉडल को यह कहने के लिए प्रोत्साहित किया जाता है कि सब कुछ सिर्फ पृष्ठभूमि है (यह पास्कल वीओसी २०१ में प्रथम श्रेणी है)।
मैं गहरी सीखने के लिए काफी नया हूं और यह पता लगाने में मदद की आवश्यकता होगी कि यह कहां से आ सकता है।
मैंने सोचा कि शायद यह मेरा नुकसान कार्य हो सकता है, जिसे मैंने इस रूप में परिभाषित किया है:
def image_categorical_cross_entropy(y_true, y_pred):
"""
:param y_true: tensor of shape (batch_size, height, width) representing the ground truth.
:param y_pred: tensor of shape (batch_size, height, width) representing the prediction.
:return: The mean cross-entropy on softmaxed tensors.
"""
return tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits_v2(logits=y_pred, labels=y_true))
मैं इस बात पर थोड़ा अनिश्चित हूं कि मेरे टेंसरों का सही आकार है या नहीं। मैं .tfrecord
फ़ाइलों को लोड करने के लिए TF के डेटासेट API का उपयोग कर रहा हूं , और मेरा एनोटेशन टेंसर आकार का है (batch_size, height, width)
। क्या (batch_size, height, width, 21)
जरूरत होगी? मॉडल के अंदर से अन्य त्रुटियां तब होती हैं जब मैं एनोटेशन इमेज को एक टेंसर में अलग करने की कोशिश करता हूं जिसमें 21 छवियां होती हैं (प्रत्येक वर्ग के लिए एक):
tensorflow.python.framework.errors_impl.InvalidArgumentError: Incompatible shapes: [12,512,512,21] vs. [12,512,512]
[[Node: metrics/acc/Equal = Equal[T=DT_INT64, _device="/job:localhost/replica:0/task:0/device:GPU:0"](metrics/acc/ArgMax, metrics/acc/ArgMax_1)]]
[[Node: training/Adam/gradients/bilinear_upsampling_2_1/concat_grad/Slice_1/_13277 = _Recv[client_terminated=false, recv_device="/job:localhost/replica:0/task:0/device:GPU:1", send_device="/job:localhost/replica:0/task:0/device:CPU:0", send_device_incarnation=1, tensor_name="edge_62151_training/Adam/gradients/bilinear_upsampling_2_1/concat_grad/Slice_1", tensor_type=DT_FLOAT, _device="/job:localhost/replica:0/task:0/device:GPU:1"]()]]
आपके सहयोग के लिए धन्यवाद!