ฝึกฝน Neural Network เพื่อแยกแยะตัวเลขคู่และคู่


14

คำถาม: เป็นไปได้ไหมที่จะฝึก NN ให้แยกแยะระหว่างเลขคี่กับเลขคู่โดยใช้เป็นตัวเลขเท่านั้น?

ฉันมีชุดข้อมูลต่อไปนี้:

Number Target
1      0
2      1
3      0
4      1
5      0
6      1
...   ...
99     0
100    1

ฉันฝึก NN ด้วยเซลล์ประสาทอินพุตสองตัว (อันหนึ่งคือตัวแปรหมายเลข, อีกอันคือเซลล์ประสาทอคติ), เก้าเซลล์ประสาทในเลเยอร์ที่ซ่อนอยู่และเซลล์ประสาทเอาท์พุทหนึ่งโดยใช้อัลกอริธึมทางพันธุกรรมที่ง่ายมาก: ในแต่ละช่วงเวลา "ต่อกัน; ส่วนที่มีข้อผิดพลาดสูงที่สุดจะหายไปและจะถูกแทนที่ด้วยผู้ชนะที่ได้รับการแก้ไข

สคริปต์สามารถแก้ปัญหาง่าย ๆ อย่างเช่นตัวดำเนินการ AND, OR และ XOR แต่ติดอยู่ในขณะที่พยายามจัดหมวดหมู่ตัวเลขคี่และคู่ ตอนนี้สิ่งที่ดีที่สุดที่จะจัดการคือการระบุหมายเลข 53 จาก 100 และใช้เวลาหลายชั่วโมง ไม่ว่าฉันจะทำให้ปกติหรือไม่อินพุตดูเหมือนจะไม่แตกต่างกัน

หากฉันต้องการที่จะโกงฉันสามารถประมวลผลข้อมูลล่วงหน้าและป้อน% 2 ไปยัง NN เป็นอินพุต แต่ฉันไม่ต้องการทำเช่นนั้น NN ควรจะสามารถประมาณทุกฟังก์ชั่นรวมถึงตัวดำเนินการโมดูโล (ฉันเชื่อว่า ) ผมทำอะไรผิดหรือเปล่า?


1
ดูเหมือนว่าคุณกำลังพยายามประมาณฟังก์ชั่น "mod" กับเครือข่ายประสาท นี่เป็นหนึ่งในปัญหาที่ฉันโปรดปรานในชั้นเรียน - "เมื่อไหร่มันจะเป็นสิ่งที่ถูกต้องในการประมาณไก่เป็นทรงกลม" แบบจำลององค์ประกอบ จำกัด เป็นสถานที่ที่ยอดเยี่ยมสำหรับมัน เมื่อถามถึงโครงข่ายประสาทเทียมนี้ฉันชอบคิดว่าเป็น "พื้นฐาน" เรารู้ว่าคำตอบที่ถูกต้องมีการหารด้วย 2 และการตัดทอนในขณะที่เครือข่ายคลาสสิกคือการคูณเวกเตอร์และฟังก์ชั่น sigmoid NN ใช้ดีที่สุดในการแก้ไขไม่ใช่การประมาณ - โดเมนของคุณมีขอบเขตหรือไม่
EngrStudent - Reinstate Monica

4
ฉันคิดว่าคำถามของคุณลึกกว่าคำตอบที่ยอมรับในปัจจุบัน พิจารณาการวางนัยทั่วไปดังต่อไปนี้: สร้างโครงข่ายประสาทเทียม (ใช้การดำเนินการเท่านั้นที่สามารถเกิดขึ้นได้ในสมอง) ซึ่งจะคำนวณ n mod k โดยที่ n และ k เป็นอินพุต ฉันสงสัยว่าเป็นไปได้ด้วยเครือข่ายที่มีขนาดคงที่หรือไม่
user66081

คำตอบ:


7

เช่นเดียวกับงานการเรียนรู้ด้วยเครื่องจักรใด ๆ การแสดงความคิดเห็นของคุณมีบทบาทสำคัญในการที่คุณเรียนรู้และพูดคุยกัน

ฉันคิดว่าปัญหาของการแทนค่าคือฟังก์ชั่น (โมดูโล) นั้นไม่เชิงเส้นสูงและไม่ราบรื่นในการแทนค่าอินพุตที่คุณเลือกสำหรับปัญหานี้

ฉันจะลองต่อไปนี้:

  1. ลองอัลกอริทึมการเรียนรู้ที่ดีกว่า (การสืบเชื้อสายย้อนกลับ / การไล่ระดับสีและตัวแปร)

  2. ลองแทนตัวเลขในระบบเลขฐานสองโดยใช้ความแม่นยำความยาวคงที่

  3. หากการป้อนข้อมูลของคุณเป็นตัวเลข b-bit ฉันจะตรวจสอบให้แน่ใจว่าชุดการฝึกของคุณไม่ได้เอนเอียงไปทางจำนวนน้อยหรือใหญ่ มีตัวเลขที่สม่ำเสมอและเป็นอิสระเลือกโดยการสุ่มจากช่วงB-1][0,2b1]

  4. เมื่อเสร็จแล้วให้ใช้เครือข่ายหลายเลเยอร์ (ลอง 2 เลเยอร์ก่อน: เช่นซ่อน + เอาท์พุทก่อนใช้เลเยอร์เพิ่มเติม)

  5. ใช้ชุดฝึกอบรม + ทดสอบแยกต่างหาก อย่าประเมินประสิทธิภาพของคุณในชุดฝึกอบรม


ฉันคิดว่าการทำการแปลงอินพุตเช่นคำนวณลอการิทึมธรรมชาติอาจมีค่า
EngrStudent - Reinstate Monica

มันอาจจะ. ในความเป็นจริงการรู้คำตอบที่นี่ (โมดูโล 2 เป็นเพียงบิตสุดท้าย) การแทนเลขฐานสองของจำนวนดิบจะทำงานได้ดีมาก เพียงเชื่อมต่อบิตสุดท้ายของอินพุตกับเอาต์พุต :) มันน่าสนใจที่จะดูว่า modulo (ไม่ใช่ -power-of-2) ทำงานได้ดีกับโครงข่ายประสาท มันอาจไม่ทำงานเช่นกัน
Vimal

สวัสดี @Vimal ขอบคุณสำหรับคำตอบ คุณรู้หรือไม่ว่าการเป็นตัวแทนของอินพุตในไบนารี่เป็นความคิดที่ดีอยู่เสมอหรือมันเกิดขึ้นเพื่อเป็นประโยชน์ในกรณีเฉพาะนี้หรือไม่?
Edgar Derby

@ AnnoysParrot - ไม่มี "กระสุนเงิน" ไม่มีตัวแทนที่ดีที่สุดสากลเดียวเพราะที่ดีที่สุดสามารถหมายถึงสิ่งที่แตกต่างและพิเศษร่วมกัน การเป็นตัวแทนไบนารีนั้นมีประโยชน์ในกรณีนี้ แต่มีมากมายที่ไม่ได้ พิจารณาเรียนรู้ลึกเกี่ยวกับข้อมูลภาพ หากคุณมีเซลล์ประสาทอินพุตแยกจากกันสำหรับแต่ละบิตเฉพาะคุณจะต้องใช้อินพุต 256 * 5.2 ล้านพิกเซลสำหรับภาพขนาด 5 ล้านพิกเซล
EngrStudent - Reinstate Monica

2
เห็นด้วยกับ @EngrStudent ที่นี่ ความรู้ก่อนหน้าจำนวนมากเป็นการออกแบบการป้อนข้อมูลที่เหมาะสมและโครงสร้างเครือข่ายประสาท เนื่องจากเครือข่ายนิวรัลเป็นวงจรที่ต่อเนื่องและสามารถสร้างความแตกต่างได้อย่างต่อเนื่องคุณสามารถปรับโทโพโลยีของเครือข่ายโดยใช้แรงบันดาลใจจากวงจรดิจิตอลสำหรับการเพิ่ม / การคูณ / การหาร / โมดูโล / ฯลฯ ก่อนหน้านี้ในโทโพโลยี (แทนที่จะเป็นเลเยอร์ที่เชื่อมต่ออย่างสมบูรณ์) สามารถนำไปสู่การฝึกอบรมที่เร็วขึ้น, การวางตัวทั่วไปที่ดีขึ้น ฯลฯ เช่นเดียวกับวิธีที่ convnets ทำงานได้ดีสำหรับภาพธรรมชาติ
Vimal

6

การเรียนรู้การจำแนกเลขคี่และเลขคู่เป็นปัญหาที่ยาก รูปแบบที่เรียบง่ายช่วยให้สามารถทำซ้ำได้อย่างไม่สิ้นสุด 2,4,6,8 ..... 1,3,5,7 .....

ฟังก์ชั่นการเปิดใช้งานแบบไม่เชิงเส้นเช่น sin (x) และ cos (x) ทำงานในทำนองเดียวกัน ดังนั้นหากคุณเปลี่ยนเซลล์ประสาทของคุณเพื่อใช้บาปและ cos แทนฟังก์ชั่นเปิดใช้งานยอดนิยมเช่น tanh หรือ relu ฉันคิดว่าคุณสามารถแก้ปัญหานี้ได้อย่างง่ายดายโดยใช้เซลล์ประสาทเดียว

การแปลงเชิงเส้นนำหน้าการแปลงแบบไม่เชิงเส้นเสมอ ดังนั้นเซลล์ประสาทเดี่ยวจะจบการเรียนรู้บาป (ax + b) ซึ่งสำหรับการรวมกันที่เหมาะสมของ & b จะเอาท์พุท 0 และ 1 หรือสลับกันในความถี่ที่ต้องการที่เราต้องการซึ่งในกรณีนี้คือ 1

ฉันไม่เคยลองทำบาปหรือ cos ในเครือข่ายประสาทของฉันมาก่อน ดังนั้นขอโทษถ้ามันเป็นความคิดที่ไม่ดี


5

ตอนนี้ฉันกำลังทำงานกับอวนประสาทและฉันก็พบปัญหาเดียวกันกับคุณ สิ่งที่ฉันทำคือการแสดงหมายเลขอินพุตเป็นอาร์เรย์ที่มีค่าเท่ากับการแสดงเลขฐานสองของจำนวน เนื่องจากสิ่งที่เรากำลังทำคือการจัดประเภทฉันแสดงผลลัพธ์ของฉันเป็นอาร์เรย์ไม่ใช่ค่าเดียว อดีต:

input = [
  [0, 0, 0, 1], // 1
  [0, 0, 1, 0], // 2
  [0, 0, 1, 1], // 3
  [0, 1, 0, 0]  // 4
]
output = [
  [1, 0], // odd
  [0, 1], // even
  [1, 0], // odd
  [0, 1]  // even
]

หวังว่านี่จะช่วยได้!


1
ตรงตามคำตอบของคุณฉันสร้างแบบจำลองในที่นี่stackoverflow.com/questions/53671491/…
prosti

สุดยอด! นี่แสดงให้เห็นว่าการแสดงข้อมูลมีความสำคัญสำหรับอัลกอริทึม ML อย่างไร เมื่อฉันใช้การแทนทศนิยมฉันได้รับความแม่นยำ 50% แต่จากความคิดนี้ฉันได้ความแม่นยำ 100% แม้ในข้อมูลที่มองไม่เห็น ขอบคุณ นี่คือการดำเนินการ: colab.research.google.com/drive/…
Kaushal28

2
ในระบบเลขฐานสองตัวเลขจะลงท้ายด้วย 0 เสมอและเลขคี่จะลงท้ายด้วย 1 ไม่น่าแปลกใจที่แบบจำลองนี้ใช้งานได้เนื่องจากเป็นไปได้ว่ามันเพิ่งเรียนรู้ที่จะคายมูลค่าของเลขหลักสุดท้าย
Syncrossus

2

ฉันมาที่นี่ซึ่งกำลังต่อสู้กับปัญหาที่คล้ายกัน ดังนั้นฉันจึงเขียนสิ่งที่ฉันจัดการ

เท่าที่ฉันรู้ perceptron เลเยอร์หนึ่งสามารถแก้ปัญหาทุกปัญหาได้ซึ่งในตอนท้ายจะทำให้การแบ่งวัตถุในเรขาคณิตใด ๆ ง่ายขึ้นโดยใช้เส้นตรง และนี่คือปัญหาแบบนี้ หากคุณวาดบิตสุดท้ายของการแทนเลขฐานสองลงบนกระดาษคุณสามารถวาดเส้นได้และตัวเลขคี่ทั้งหมดอยู่ในด้านหนึ่งและแม้แต่คู่อื่น ๆ ด้วยเหตุผลเดียวกันมันเป็นไปไม่ได้ที่จะแก้ปัญหา xor ด้วยเครือข่ายชั้นเดียว

ตกลง. ปัญหานี้ดูง่ายมากดังนั้นให้ทำตามขั้นตอนการเปิดใช้งาน Heaviside หลังจากที่ฉันเล่นกับหมายเลขของฉันเล็กน้อยฉันก็ตระหนักว่าปัญหานี่คืออคติ ฉัน google เล็กน้อยและสิ่งที่ฉันพบคือถ้าคุณอยู่กับการเป็นตัวแทนรูปทรงเรขาคณิตอคติช่วยให้คุณสามารถเปลี่ยนสถานที่ของการเปิดใช้งานในระบบพิกัด

ปัญหาการศึกษามาก


1

เป็นที่ทราบกันดีว่าตรรกะประตูไม่ใช่, และ, หรือทั้งหมดสามารถทำได้ด้วยเครือข่ายนิวรัลง่าย ๆ (NN), และคุณสามารถสร้างเครื่องคิดเลขทางคณิตศาสตร์ที่สมบูรณ์แบบด้วยประตูตรรกะโดยใช้ตัวเลขไบนารี่เป็นอินพุต. ดังนั้นคุณควรสร้าง NN เพื่อคำนวณ n modulo k สำหรับตัวเลข n และ k ใด ๆ ที่แสดงในฐาน 2

หากคุณต้องการคำนวณ n modulo k สำหรับจำนวนคงที่ k (เช่น k = 4) คุณสามารถสร้าง NN ที่ง่ายมากที่ทำเช่นนั้น: แสดงหมายเลขอินพุต n ในฐาน k และไม่สนใจตัวเลขทั้งหมดนอกเหนือจากอันดับต่ำสุด หลักและคุณมีคำตอบ!


0

แนวคิดหนึ่งที่หลีกเลี่ยงการใช้ "mod 2" อย่างชัดเจนในอินพุตสามารถประมวลผลหมายเลขเป็นลำดับของพิกเซลจากนั้นปัญหาจะได้รับการยอมรับหากส่วนนั้นสามารถแบ่งออกเป็นสองเซ็กเมนต์ที่เท่ากัน นี่เป็นปัญหาด้านวิชันซิสเต็มและสามารถเรียนรู้ได้จากเครือข่ายทั่วไป

อีกวิธีหนึ่งหากเก็บหมายเลขไว้เป็นแบบลอยคำถามจะลด (หรือทำให้เป็นมาตรฐาน) เพื่อรับรู้เมื่อจำนวนลอยมีค่าประมาณเป็นจำนวนเต็ม


ความคิดที่น่าสนใจ คุณสามารถอธิบายอย่างละเอียดว่าคุณต้องการแปลงตัวเลขเป็นพิกเซลได้อย่างไร
Jan Kukacka

ดีคิดว่า "ฐาน 1" หากต้องการประมวลผล n ให้วาดแถบสีดำที่มี n พิกเซล ฉันเดาว่าเมล็ดคอนโวลูชั่นจะสังเกตเห็นความแตกต่างระหว่างคี่กับจำนวนพิกเซล
arivero

0

ฉันสร้างเครือข่ายดังกล่าวในที่นี่

การเป็นตัวแทน @William Gottschalk เป็นรากฐาน

มันใช้ 1 เซลล์ประสาทในเลเยอร์แรกที่ซ่อนด้วย 32 อินพุต เลเยอร์เอาท์พุทมีเพียง 2 เซลล์ประสาทสำหรับการเข้ารหัสหนึ่งร้อนจาก 0 และ 1


0

ทางออกของฉัน

import numpy as np


def layer_1_z(x, w1, b1):
    return 1 / w1 * x + b1


def layer_2(x, w1, b1, w2, b2):
    y1 = layer_1_z(x, w1, b1)
    y2 = y1 - np.floor(y1)
    return w2 * y2 + b2


def layer_2_activation(x, w1, b1, w2, b2):
    y2 = layer_2(x, w1, b1, w2, b2)
    # return 1 / (1 + np.exp(-y2))
    return (y2 > 0) * 1


def loss(param):
    w1, b1, w2, b2 = param
    x = np.arange(0, 1000, 1)
    y_hat = layer_2_activation(x, w1, b1, w2, b2)
    y_true = (x % 2 > 0) * 1
    return sum(np.square(y_hat - y_true))


# %%

from sko.GA import GA

ga = GA(func=loss, n_dim=4, size_pop=50, max_iter=100, lb=[1, 0, 1, 0], ub=[32, 1, 2, 1], precision=1)
best_x, best_y = ga.run()
print('best_x:', best_x, '\n', 'best_y:', best_y)

for x in range(1001, 1200):
    y_hat = layer_2_activation(x, *best_x)
    print('input:{},divide by 2:{}'.format(x, y_hat == 0))

อินพุต: 1001, หารด้วย 2: อินพุตเท็จ: 1002, หารด้วย 2: อินพุตจริง: 1003, หารด้วย 2: อินพุตเท็จ: 1004, หารด้วย 2: อินพุตจริง: 1005, หารด้วย 2: อินพุตเท็จ: 1006, หาร โดย 2: อินพุตจริง: 1007, หารด้วย 2: อินพุตเท็จ: 1008, หารด้วย 2: อินพุตจริง: 1009, หารด้วย 2: อินพุตเท็จ: 1010, หารด้วย 2: อินพุตจริง: 1011, หารด้วย 2: อินพุตเท็จ : 1,012, หารด้วย 2: อินพุตจริง: 1013, หารด้วย 2: อินพุตปลอม: 1014, หารด้วย 2: อินพุตจริง: 1015, หารด้วย 2: อินพุตเท็จ: 1016, หารด้วย 2: อินพุตจริง: 1017, หารด้วย 2: อินพุตเท็จ: 1018, หารด้วย 2: อินพุตจริง: 1019, หารด้วย 2: อินพุตเท็จ: 1020, หารด้วย 2: อินพุตจริง: 1021, หารด้วย 2: ป้อนข้อมูลเท็จ: 1022, หารด้วย 2: อินพุตจริง: 1023, หารด้วย 2: อินพุตเท็จ: 1024, หารด้วย 2: อินพุตจริง: 1025, หารด้วย 2: อินพุตเท็จ: 1026, หารด้วย 2: อินพุตจริง: 1027, หารด้วย 2: อินพุตเท็จ: 1028, หารด้วย 2 : อินพุตจริง: 1029 หารด้วย 2:อินพุตที่เป็นเท็จ: 1030, หารด้วย 2: อินพุตที่แท้จริง: 1031, หารด้วย 2: อินพุตที่เป็นเท็จ: 1032, หารด้วย 2: อินพุตที่แท้จริง: 1033, หารด้วย 2: อินพุตเท็จ: 1034, หารด้วย 2: อินพุตจริง: 1035 หารด้วย 2: อินพุตเท็จ: 1036, หารด้วย 2: อินพุตจริง: 1037, หารด้วย 2: อินพุตเท็จ: 1038, หารด้วย 2: อินพุตจริง: 1039, หารด้วย 2: ป้อนข้อมูลเท็จ: 1040, หารด้วย 2: True อินพุต: 1041, หารด้วย 2: อินพุตเท็จ: 1042, หารด้วย 2: อินพุตจริง: 1043, หารด้วย 2: อินพุตเท็จ: 1044, หารด้วย 2: อินพุตจริง: 1045, หารด้วย 2: อินพุตเท็จ: 1046, หาร โดย 2: True input: 1047, หารด้วย 2: False input: 1048, หารด้วย 2: True input: 1049, หารด้วย 2: False input: 1,050, หารด้วย 2: True input: 1051, หารด้วย 2: อินพุตเท็จ : 1052, หารด้วย 2: อินพุตจริง: 1053, หารด้วย 2: อินพุตเท็จ: 1054, หารด้วย 2: อินพุตจริง: 1,055, หารด้วย 2: อินพุตเท็จ: 1056, หารด้วย 2: อินพุตจริง: 1057, หารด้วย 2: อินพุตที่เป็นเท็จ: 1058 หารด้วย 2:อินพุตจริง: 1059 หารด้วย 2: ป้อนข้อมูลผิดพลาด: 1,060 หารด้วย 2: ป้อนข้อมูลจริง: 1061 หารด้วย 2: ป้อนข้อมูลผิดพลาด: 1,062 หารด้วย 2: ป้อนข้อมูลจริง: 1063 หารด้วย 2: ป้อนข้อมูลเท็จ: 1064 หารด้วย 2: อินพุตจริง: 1065, หารด้วย 2: ป้อนข้อมูลเท็จ: 1066, หารด้วย 2: ป้อนข้อมูลจริง: 1067, หารด้วย 2: ป้อนข้อมูลเท็จ: 1068, หารด้วย 2: ป้อนข้อมูลจริง: 1069, หารด้วย 2: เท็จ อินพุต: 1070, หารด้วย 2: อินพุตจริง: 1071, หารด้วย 2: อินพุตเท็จ: 1072, หารด้วย 2: อินพุตจริง: 1073, หารด้วย 2: อินพุตเท็จ: 1074, หารด้วย 2: อินพุตจริง: 1075, หาร โดย 2: อินพุตเท็จ: 1076, หารด้วย 2: อินพุตจริง: 1077, หารด้วย 2: อินพุตเท็จ: 1078, หารด้วย 2: อินพุตจริง: 1079, หารด้วย 2: ป้อนข้อมูลเท็จ: 1080, หารด้วย 2: อินพุตจริง : 1081 หารด้วย 2: ใส่ผิด: 1082 หารด้วย 2: ใส่จริง: 1083 หารด้วย 2: ใส่ผิด: 1084 หารด้วย 2: ใส่จริง: 1085 หารด้วย 2: ใส่ผิด: 1086 หารด้วย 2: อินพุตที่แท้จริง: 1087 หารด้วย 2:การป้อนข้อมูลเท็จ: 1088 หารด้วย 2: การป้อนข้อมูลจริง: 1089 หารด้วย 2: การป้อนข้อมูลเท็จ: 1090 หารด้วย 2: การป้อนข้อมูลจริง: 1091 หารด้วย 2: การป้อนข้อมูลเท็จ: 1092 หารด้วย 2: การป้อนข้อมูลจริง: 1093 หารด้วย 2: อินพุตเท็จ: 1094, หารด้วย 2: อินพุตจริง: 1095, หารด้วย 2: อินพุตเท็จ: 1096, หารด้วย 2: อินพุตจริง: 1,097, หารด้วย 2: ป้อนข้อมูลเท็จ: 1098, หารด้วย 2: True อินพุต: 1,099, หารด้วย 2: อินพุตเท็จ: 1100, หารด้วย 2: อินพุตจริง: 1101, หารด้วย 2: อินพุตเท็จ: 1102, หารด้วย 2: อินพุตจริง: 1103, หารด้วย 2: อินพุตเท็จ: 1104, หาร โดย 2: อินพุตจริง: 1105 หารด้วย 2: อินพุตปลอม: 1106 หารด้วย 2: อินพุตจริง: 1107 หารด้วย 2: อินพุตเท็จ: 1108 หารด้วย 2: อินพุตจริง: 1109 หารด้วย 2: อินพุตปลอม : 1110, หารด้วย 2: อินพุตจริง: 1111, หารด้วย 2: อินพุตเท็จ: 1112, หารด้วย 2: อินพุตจริง: 1113, หารด้วย 2: อินพุตเท็จ: 1114, หารด้วย 2: อินพุตจริง: 1115, หารด้วย 2: อินพุตที่ผิดพลาด: 1116 หารด้วย 2:อินพุตจริง: 1117, หารด้วย 2: อินพุตเท็จ: 1118, หารด้วย 2: อินพุตจริง: 1119, หารด้วย 2: อินพุตเท็จ: 1120, หารด้วย 2: อินพุตจริง: 1121, หารด้วย 2: อินพุตเท็จ: 1122, หารด้วย 2: อินพุตจริง: 1123, หารด้วย 2: ป้อนข้อมูลเท็จ: 1124, หารด้วย 2: ป้อนข้อมูลจริง: 1125, หารด้วย 2: ป้อนข้อมูลเท็จ: 1126, หารด้วย 2: ป้อนข้อมูลจริง: 1127, หารด้วย 2: เท็จ อินพุต: 1128, หารด้วย 2: อินพุตจริง: 1129, หารด้วย 2: อินพุตเท็จ: 1130, หารด้วย 2: อินพุตจริง: 1131, หารด้วย 2: อินพุตเท็จ: 1132, หารด้วย 2: อินพุตจริง: 1133, หาร โดย 2: อินพุตเท็จ: 1134, หารด้วย 2: อินพุตจริง: 1135, หารด้วย 2: อินพุตเท็จ: 1136, หารด้วย 2: อินพุตจริง: 1137, หารด้วย 2: อินพุตเท็จ: 1138, หารด้วย 2: อินพุตจริง : 1139, หารด้วย 2: อินพุตเท็จ: 1140, หารด้วย 2: อินพุตจริง: 1141, หารด้วย 2: อินพุตเท็จ: 1142, หารด้วย 2: อินพุตจริง: 1143, หารด้วย 2: อินพุตเท็จ: 1144, หารด้วย 2: อินพุตที่แท้จริง: 1145 หารด้วย 2:อินพุตที่ผิดพลาด: 1146, หารด้วย 2: อินพุตที่แท้จริง: 1147, หารด้วย 2: อินพุตที่เป็นเท็จ: 1148, หารด้วย 2: อินพุตที่แท้จริง: 1149, หารด้วย 2: อินพุตเท็จ: 1150, หารด้วย 2: อินพุตจริง: 1151, หารด้วย 2: อินพุตเท็จ: 1152, หารด้วย 2: อินพุตจริง: 1153, หารด้วย 2: อินพุตเท็จ: 1154, หารด้วย 2: อินพุตจริง: 1155, หารด้วย 2: อินพุตเท็จ: 1156, หารด้วย 2: True อินพุต: 1157, หารด้วย 2: อินพุตเท็จ: 1158, หารด้วย 2: อินพุตจริง: 1159, หารด้วย 2: อินพุตเท็จ: 1160, หารด้วย 2: อินพุตจริง: 1161, หารด้วย 2: อินพุตเท็จ: 1162, หาร โดย 2: อินพุตจริง: 1163, หารด้วย 2: อินพุตเท็จ: 1164, หารด้วย 2: อินพุตจริง: 1165, หารด้วย 2: อินพุตเท็จ: 1166, หารด้วย 2: อินพุตจริง: 1167, หารด้วย 2: อินพุตเท็จ : 1168, หารด้วย 2: อินพุตจริง: 1169, หารด้วย 2: อินพุตเท็จ: 1170, หารด้วย 2: อินพุตจริง: 1171, หารด้วย 2: อินพุตเท็จ: 1172, หารด้วย 2: อินพุตจริง: 1173, หารด้วย 2: อินพุตที่ผิดพลาด: 1174 หารด้วย 2:True input: 1175, หารด้วย 2: False input: 1176, หารด้วย 2: True input: 1177, หารด้วย 2: ใส่ผิด: 1178, หารด้วย 2: True input: 1179, หารด้วย 2: ใส่เท็จ: 1180, หารด้วย 2: True input: 1181, หารด้วย 2: False input: 1182, หารด้วย 2: True input: 1183, หารด้วย 2: False input: 1184, หารด้วย 2: True input: 1185, หารด้วย 2: False อินพุต: 1186, หารด้วย 2: อินพุตจริง: 1187, หารด้วย 2: อินพุตเท็จ: 1188, หารด้วย 2: อินพุตจริง: 1189, หารด้วย 2: อินพุตเท็จ: 1190, หารด้วย 2: อินพุตจริง: 1191, หาร โดย 2: อินพุตเท็จ: 1192, หารด้วย 2: อินพุตจริง: 1193, หารด้วย 2: อินพุตเท็จ: 1194, หารด้วย 2: อินพุตจริง: 1195, หารด้วย 2: ป้อนข้อมูลเท็จ: 1196, หารด้วย 2: อินพุตจริง : 1197, หารด้วย 2: อินพุตเท็จ: 1198, หารด้วย 2: อินพุตจริง: 1199, หารด้วย 2: เท็จอินพุตจริง: 1179, หารด้วย 2: อินพุตเท็จ: 1180, หารด้วย 2: อินพุตจริง: 1181, หารด้วย 2: อินพุตเท็จ: 1182, หารด้วย 2: อินพุตจริง: 1183, หารด้วย 2: อินพุตเท็จ: 1184, หารด้วย 2: True input: 1185, หารด้วย 2: False input: 1186, หารด้วย 2: True input: 1187, หารด้วย 2: False input: 1188, หารด้วย 2: True input: 1189, หารด้วย 2: False อินพุต: 1190, หารด้วย 2: อินพุตจริง: 1191, หารด้วย 2: อินพุตเท็จ: 1192, หารด้วย 2: อินพุตจริง: 1193, หารด้วย 2: อินพุตเท็จ: 1194, หารด้วย 2: อินพุตจริง: 1195, หาร โดย 2: อินพุตเท็จ: 1196, หารด้วย 2: อินพุตจริง: 1197, หารด้วย 2: อินพุตเท็จ: 1198, หารด้วย 2: อินพุตจริง: 1,199, หารด้วย 2: เท็จอินพุตจริง: 1179, หารด้วย 2: อินพุตเท็จ: 1180, หารด้วย 2: อินพุตจริง: 1181, หารด้วย 2: อินพุตเท็จ: 1182, หารด้วย 2: อินพุตจริง: 1183, หารด้วย 2: อินพุตเท็จ: 1184, หารด้วย 2: True input: 1185, หารด้วย 2: False input: 1186, หารด้วย 2: True input: 1187, หารด้วย 2: False input: 1188, หารด้วย 2: True input: 1189, หารด้วย 2: False อินพุต: 1190, หารด้วย 2: อินพุตจริง: 1191, หารด้วย 2: อินพุตเท็จ: 1192, หารด้วย 2: อินพุตจริง: 1193, หารด้วย 2: อินพุตเท็จ: 1194, หารด้วย 2: อินพุตจริง: 1195, หาร โดย 2: อินพุตเท็จ: 1196, หารด้วย 2: อินพุตจริง: 1197, หารด้วย 2: อินพุตเท็จ: 1198, หารด้วย 2: อินพุตจริง: 1,199, หารด้วย 2: เท็จอินพุตจริง: 1187, หารด้วย 2: อินพุตเท็จ: 1188, หารด้วย 2: อินพุตจริง: 1189, หารด้วย 2: อินพุตเท็จ: 1190, หารด้วย 2: อินพุตจริง: 1191, หารด้วย 2: อินพุตเท็จ: 1192, หารด้วย 2: อินพุตจริง: 1193, หารด้วย 2: อินพุตเท็จ: 1194, หารด้วย 2: อินพุตจริง: 1195, หารด้วย 2: อินพุตเท็จ: 1196, หารด้วย 2: อินพุตจริง: 1197, หารด้วย 2: เท็จ อินพุต: 1198 หารด้วย 2: อินพุตจริง: 1199 หารด้วย 2: เท็จอินพุตจริง: 1187, หารด้วย 2: อินพุตเท็จ: 1188, หารด้วย 2: อินพุตจริง: 1189, หารด้วย 2: อินพุตเท็จ: 1190, หารด้วย 2: อินพุตจริง: 1191, หารด้วย 2: อินพุตเท็จ: 1192, หารด้วย 2: อินพุตจริง: 1193, หารด้วย 2: อินพุตเท็จ: 1194, หารด้วย 2: อินพุตจริง: 1195, หารด้วย 2: อินพุตเท็จ: 1196, หารด้วย 2: อินพุตจริง: 1197, หารด้วย 2: เท็จ อินพุต: 1198 หารด้วย 2: อินพุตจริง: 1199 หารด้วย 2: เท็จ


ยิ่งกว่านั้นการหารด้วยตัวเลขอื่น (พูด, 7) ก็ดีเช่นกัน:

import numpy as np


def layer_1_z(x, w1, b1):
    return 1 / w1 * x + b1


def layer_2(x, w1, b1, w2, b2):
    y1 = layer_1_z(x, w1, b1)
    y2 = y1 - np.floor(y1)
    return w2 * y2 + b2


def layer_2_activation(x, w1, b1, w2, b2):
    y2 = layer_2(x, w1, b1, w2, b2)
    # return 1 / (1 + np.exp(-y2))
    return (y2 > 0) * 1


def loss(param):
    w1, b1, w2, b2 = param
    x = np.arange(0, 1000, 1)
    y_hat = layer_2_activation(x, w1, b1, w2, b2)
    y_true = (x % 7 > 0) * 1
    return sum(np.square(y_hat - y_true))


# %%

from sko.GA import GA

ga = GA(func=loss, n_dim=4, size_pop=50, max_iter=100, lb=[1, 0, 1, 0], ub=[32, 1, 2, 1], precision=1)
best_x, best_y = ga.run()
print('best_x:', best_x, '\n', 'best_y:', best_y)

for x in range(1001, 1200):
    y_hat = layer_2_activation(x, *best_x)
    print('input:{},divide by 7:{}'.format(x, y_hat == 0))

อินพุต: 1001, หารด้วย 7: อินพุตจริง: 1002, หารด้วย 7: อินพุตเท็จ: 1003, หารด้วย 7: อินพุตเท็จ: 1004, หารด้วย 7: อินพุตเท็จ: 1005, หารด้วย 7: อินพุตเท็จ: 1006, หาร โดย 7: อินพุตเท็จ: 1007, หารด้วย 7: อินพุตเท็จ: 1008, หารด้วย 7: อินพุตจริง: 1009, หารด้วย 7: อินพุตเท็จ: 1010, หารด้วย 7: อินพุตเท็จ: 1011, หารด้วย 7: อินพุตเท็จ : 1012 หารด้วย 7: ใส่ผิด: 1013 หารด้วย 7: ใส่ผิด: 1014 หารด้วย 7: ใส่ผิด: 1015 หารด้วย 7: ใส่จริง: 1016 หารด้วย 7: ใส่ผิด: 1017 หารด้วย 7: อินพุตเท็จ: 1018, หารด้วย 7: อินพุตเท็จ: 1019, หารด้วย 7: อินพุตเท็จ: 1020, หารด้วย 7: อินพุตเท็จ: 1021, หารด้วย 7: อินพุตเท็จ: 1022, หารด้วย 7: อินพุตจริง: 1023, หารด้วย 7: อินพุตเท็จ: 1024, หารด้วย 7: อินพุตปลอม: 1025, หารด้วย 7: อินพุตเท็จ: 1026, หารด้วย 7: อินพุตเท็จ: 1027, หารด้วย 7: อินพุตเท็จ: 1028, หารด้วย 7 : อินพุตที่ผิด: 1029, หารด้วย 7:อินพุตที่แท้จริง: 1030, หารด้วย 7: อินพุตเท็จ: 1031, หารด้วย 7: อินพุตเท็จ: 1032, หารด้วย 7: อินพุตเท็จ: 1033, หารด้วย 7: อินพุตเท็จ: 1034, หารด้วย 7: อินพุตเท็จ: 1035, หารด้วย 7: อินพุตเท็จ: 1036, หารด้วย 7: อินพุตจริง: 1037, หารด้วย 7: อินพุตเท็จ: 1038, หารด้วย 7: อินพุตเท็จ: 1039, หารด้วย 7: อินพุตเท็จ: 1040, หารด้วย 7: เท็จ อินพุต: 1041, หารด้วย 7: อินพุตเท็จ: 1042, หารด้วย 7: อินพุตปลอม: 1043, หารด้วย 7: อินพุตจริง: 1044, หารด้วย 7: อินพุตเท็จ: 1045, หารด้วย 7: อินพุตเท็จ: 1046, หาร โดย 7: อินพุตเท็จ: 1047, หารด้วย 7: อินพุตเท็จ: 1048, หารด้วย 7: อินพุตเท็จ: 1049, หารด้วย 7: อินพุตเท็จ: 1050, หารด้วย 7: อินพุตจริง: 1051, หารด้วย 7: อินพุตเท็จ : 1,052, หารด้วย 7: ใส่ผิด: 1053, หารด้วย 7: ใส่ผิด: 1054, หารด้วย 7: ใส่ผิด: 1055, หารด้วย 7: ใส่ผิด: 1056, หารด้วย 7: ใส่ผิด: 1057, หารด้วย 7: อินพุตที่แท้จริง: 1058,หารด้วย 7: ใส่ผิด: 1059 หารด้วย 7: ใส่ผิด: 1060, หารด้วย 7: ใส่ผิด: 1061, หารด้วย 7: ใส่ผิด: 1062, หารด้วย 7: ใส่ผิด: 1063, หารด้วย 7: เท็จ อินพุต: 1064, หารด้วย 7: อินพุตจริง: 1065, หารด้วย 7: อินพุตเท็จ: 1066, หารด้วย 7: อินพุตเท็จ: 1067, หารด้วย 7: อินพุตเท็จ: 1068, หารด้วย 7: อินพุตเท็จ: 1069, หาร โดย 7: อินพุตเท็จ: 1070, หารด้วย 7: อินพุตเท็จ: 1071, หารด้วย 7: อินพุตจริง: 1072, หารด้วย 7: อินพุตเท็จ: 1073, หารด้วย 7: อินพุตเท็จ: 1074, หารด้วย 7: อินพุตเท็จ : 1075 หารด้วย 7: ใส่ผิด: 1076 หารด้วย 7: ใส่ผิด: 1077 หารด้วย 7: ใส่ผิด: 1078 หารด้วย 7: ใส่จริง: 1079 หารด้วย 7: ใส่ผิด: 1080 หารด้วย 7: อินพุตที่เป็นเท็จ: 1081, หารด้วย 7: อินพุตที่เป็นเท็จ: 1082, หารด้วย 7: อินพุตที่เป็นเท็จ: 1,083, หารด้วย 7: อินพุตที่เป็นเท็จ: 1084, หารด้วย 7: อินพุตที่เป็นเท็จ: 1085, หารด้วย 7: อินพุตจริง: 1086, หารด้วย 7:อินพุตที่เป็นเท็จ: 1087, หารด้วย 7: อินพุตที่เป็นเท็จ: 1088, หารด้วย 7: อินพุตที่เป็นเท็จ: 1089, หารด้วย 7: อินพุตที่เป็นเท็จ: 1090, หารด้วย 7: อินพุตที่เป็นเท็จ: 1091, หารด้วย 7: อินพุตเท็จ: 1092 หารด้วย 7: อินพุตจริง: 1093, หารด้วย 7: อินพุตเท็จ: 1094, หารด้วย 7: อินพุตเท็จ: 1095, หารด้วย 7: อินพุตเท็จ: 1096, หารด้วย 7: ป้อนข้อมูลเท็จ: 1097, หารด้วย 7: เท็จ อินพุต: 1,098, หารด้วย 7: อินพุตเท็จ: 1,099, หารด้วย 7: อินพุตจริง: 1100, หารด้วย 7: อินพุตเท็จ: 1101, หารด้วย 7: อินพุตเท็จ: 1102, หารด้วย 7: อินพุตเท็จ: 1103, หาร โดย 7: อินพุตเท็จ: 1104, หารด้วย 7: อินพุตเท็จ: 1105, หารด้วย 7: อินพุตเท็จ: 1106, หารด้วย 7: อินพุตจริง: 1107, หารด้วย 7: อินพุตเท็จ: 1108, หารด้วย 7: อินพุตเท็จ : 1109 หารด้วย 7: ใส่ผิด: 1110 หารด้วย 7: ใส่ผิด: 1111 หารด้วย 7: ใส่ผิด: 1112 หารด้วย 7: ใส่ผิด: 1113 หารด้วย 7: ใส่จริง: 1114 หารด้วย 7: ใส่ผิด: 1115หารด้วย 7: ใส่ผิด: 1116, หารด้วย 7: ใส่เท็จ: 1117, หารด้วย 7: ใส่ผิด: 1118, หารด้วย 7: ใส่ผิด: 1119, หารด้วย 7: ใส่ผิด: 1120, หารด้วย 7: จริง อินพุต: 1121, หารด้วย 7: อินพุตเท็จ: 1122, หารด้วย 7: อินพุตเท็จ: 1123, หารด้วย 7: อินพุตเท็จ: 1124, หารด้วย 7: อินพุตเท็จ: 1125, หารด้วย 7: อินพุตเท็จ: 1126, หาร โดย 7: อินพุตเท็จ: 1127, หารด้วย 7: อินพุตจริง: 1128, หารด้วย 7: อินพุตเท็จ: 1129, หารด้วย 7: อินพุตเท็จ: 1130, หารด้วย 7: อินพุตเท็จ: 1131, หารด้วย 7: อินพุตเท็จ : 1132, หารด้วย 7: อินพุตเท็จ: 1133, หารด้วย 7: อินพุตเท็จ: 1134, หารด้วย 7: อินพุตจริง: 1135, หารด้วย 7: อินพุตเท็จ: 1136, หารด้วย 7: อินพุตเท็จ: 1137, หารด้วย 7: อินพุตเท็จ: 1138, หารด้วย 7: อินพุตเท็จ: 1139, หารด้วย 7: อินพุตเท็จ: 1140, หารด้วย 7: อินพุตเท็จ: 1141, หารด้วย 7: อินพุตจริง: 1142, หารด้วย 7: อินพุตเท็จ: 1143 หารด้วย 7: ใส่ผิด:1144, หารด้วย 7: อินพุตเท็จ: 1145, หารด้วย 7: อินพุตเท็จ: 1146, หารด้วย 7: อินพุตเท็จ: 1147, หารด้วย 7: อินพุตเท็จ: 1148, หารด้วย 7: อินพุตจริง: 1149, หารด้วย 7 : อินพุตเท็จ: 1150, หารด้วย 7: อินพุตเท็จ: 1151, หารด้วย 7: อินพุตเท็จ: 1152, หารด้วย 7: อินพุตเท็จ: 1153, หารด้วย 7: อินพุตเท็จ: 1154, หารด้วย 7: อินพุตเท็จ: 1155 , หารด้วย 7: อินพุตจริง: 1156, หารด้วย 7: อินพุตเท็จ: 1157, หารด้วย 7: อินพุตเท็จ: 1158, หารด้วย 7: อินพุตเท็จ: 1159, หารด้วย 7: อินพุตเท็จ: 1160, หารด้วย 7: อินพุตเท็จ: 1161, หารด้วย 7: อินพุตเท็จ: 1162, หารด้วย 7: อินพุตจริง: 1163, หารด้วย 7: อินพุตเท็จ: 1164, หารด้วย 7: อินพุตเท็จ: 1165, หารด้วย 7: อินพุตเท็จ: 1166, หารด้วย 7: อินพุตเท็จ: 1167, หารด้วย 7: อินพุตเท็จ: 1168, หารด้วย 7: อินพุตเท็จ: 1169, หารด้วย 7: อินพุตจริง: 1170, หารด้วย 7: อินพุตเท็จ: 1171, หารด้วย 7: เท็จ อินพุต: 1172, หารด้วย 7:อินพุตที่ผิดพลาด: 1173, หารด้วย 7: อินพุตเท็จ: 1174, หารด้วย 7: อินพุตเท็จ: 1175, หารด้วย 7: อินพุตเท็จ: 1176, หารด้วย 7: อินพุตจริง: 1177, หารด้วย 7: อินพุตเท็จ: 1178, หารด้วย 7: อินพุตเท็จ: 1179, หารด้วย 7: อินพุตเท็จ: 1180, หารด้วย 7: อินพุตเท็จ: 1181, หารด้วย 7: อินพุตเท็จ: 1182, หารด้วย 7: อินพุตเท็จ: 1183, หารด้วย 7: True อินพุต: 1184, หารด้วย 7: อินพุตเท็จ: 1185, หารด้วย 7: อินพุตเท็จ: 1186, หารด้วย 7: อินพุตเท็จ: 1187, หารด้วย 7: อินพุตเท็จ: 1188, หารด้วย 7: อินพุตเท็จ: 1189, หาร โดย 7: อินพุตเท็จ: 1190, หารด้วย 7: อินพุตจริง: 1191, หารด้วย 7: อินพุตเท็จ: 1192, หารด้วย 7: อินพุตเท็จ: 1193, หารด้วย 7: อินพุตเท็จ: 1194, หารด้วย 7: อินพุตเท็จ : 1195, หารด้วย 7: อินพุตเท็จ: 1196, หารด้วย 7: อินพุตเท็จ: 1197, หารด้วย 7: อินพุตจริง: 1198, หารด้วย 7: อินพุตเท็จ: 1199, หารด้วย 7: เท็จหารด้วย 7: อินพุตเท็จ: 1175, หารด้วย 7: อินพุตเท็จ: 1176, หารด้วย 7: อินพุตจริง: 1177, หารด้วย 7: อินพุตเท็จ: 1178, หารด้วย 7: อินพุตเท็จ: 1179, หารด้วย 7: เท็จ อินพุต: 1180, หารด้วย 7: อินพุตเท็จ: 1181, หารด้วย 7: อินพุตเท็จ: 1182, หารด้วย 7: อินพุตเท็จ: 1183, หารด้วย 7: อินพุตจริง: 1184, หารด้วย 7: อินพุตเท็จ: 1185, หาร โดย 7: อินพุตเท็จ: 1186, หารด้วย 7: อินพุตเท็จ: 1187, หารด้วย 7: อินพุตเท็จ: 1188, หารด้วย 7: อินพุตเท็จ: 1189, หารด้วย 7: อินพุตเท็จ: 1190, หารด้วย 7: อินพุตจริง : 1191, หารด้วย 7: ใส่ผิด: 1192, หารด้วย 7: ใส่ผิด: 1193, หารด้วย 7: ใส่ผิด: 1194, หารด้วย 7: ใส่ผิด: 1195, หารด้วย 7: ใส่ผิด: 1196, หารด้วย 7: อินพุตเท็จ: 1197, หารด้วย 7: อินพุตจริง: 1198, หารด้วย 7: อินพุตเท็จ: 1199, หารด้วย 7: เท็จหารด้วย 7: อินพุตเท็จ: 1175, หารด้วย 7: อินพุตเท็จ: 1176, หารด้วย 7: อินพุตจริง: 1177, หารด้วย 7: อินพุตเท็จ: 1178, หารด้วย 7: อินพุตเท็จ: 1179, หารด้วย 7: เท็จ อินพุต: 1180, หารด้วย 7: อินพุตเท็จ: 1181, หารด้วย 7: อินพุตเท็จ: 1182, หารด้วย 7: อินพุตเท็จ: 1183, หารด้วย 7: อินพุตจริง: 1184, หารด้วย 7: อินพุตเท็จ: 1185, หาร โดย 7: อินพุตเท็จ: 1186, หารด้วย 7: อินพุตเท็จ: 1187, หารด้วย 7: อินพุตเท็จ: 1188, หารด้วย 7: อินพุตเท็จ: 1189, หารด้วย 7: อินพุตเท็จ: 1190, หารด้วย 7: อินพุตจริง : 1191, หารด้วย 7: ใส่ผิด: 1192, หารด้วย 7: ใส่ผิด: 1193, หารด้วย 7: ใส่ผิด: 1194, หารด้วย 7: ใส่ผิด: 1195, หารด้วย 7: ใส่ผิด: 1196, หารด้วย 7: อินพุตเท็จ: 1197, หารด้วย 7: อินพุตจริง: 1198, หารด้วย 7: อินพุตเท็จ: 1199, หารด้วย 7: เท็จอินพุตเท็จ: 1178, หารด้วย 7: อินพุตเท็จ: 1179, หารด้วย 7: อินพุตเท็จ: 1180, หารด้วย 7: อินพุตเท็จ: 1181, หารด้วย 7: อินพุตเท็จ: 1182, หารด้วย 7: อินพุตเท็จ: 1183, หารด้วย 7: อินพุตจริง: 1184, หารด้วย 7: อินพุตเท็จ: 1185, หารด้วย 7: อินพุตเท็จ: 1186, หารด้วย 7: อินพุตเท็จ: 1187, หารด้วย 7: อินพุตเท็จ: 1188, หารด้วย 7: เท็จ อินพุต: 1189, หารด้วย 7: อินพุตเท็จ: 1190, หารด้วย 7: อินพุตจริง: 1191, หารด้วย 7: อินพุตเท็จ: 1192, หารด้วย 7: อินพุตเท็จ: 1193, หารด้วย 7: อินพุตเท็จ: 1194, หาร โดย 7: อินพุตเท็จ: 1195, หารด้วย 7: อินพุตเท็จ: 1196, หารด้วย 7: อินพุตเท็จ: 1197, หารด้วย 7: อินพุตจริง: 1198, หารด้วย 7: อินพุตเท็จ: 1199, หารด้วย 7: เท็จอินพุตเท็จ: 1178, หารด้วย 7: อินพุตเท็จ: 1179, หารด้วย 7: อินพุตเท็จ: 1180, หารด้วย 7: อินพุตเท็จ: 1181, หารด้วย 7: อินพุตเท็จ: 1182, หารด้วย 7: อินพุตเท็จ: 1183, หารด้วย 7: อินพุตจริง: 1184, หารด้วย 7: อินพุตเท็จ: 1185, หารด้วย 7: อินพุตเท็จ: 1186, หารด้วย 7: อินพุตเท็จ: 1187, หารด้วย 7: อินพุตเท็จ: 1188, หารด้วย 7: เท็จ อินพุต: 1189, หารด้วย 7: อินพุตเท็จ: 1190, หารด้วย 7: อินพุตจริง: 1191, หารด้วย 7: อินพุตเท็จ: 1192, หารด้วย 7: อินพุตเท็จ: 1193, หารด้วย 7: อินพุตเท็จ: 1194, หาร โดย 7: อินพุตเท็จ: 1195, หารด้วย 7: อินพุตเท็จ: 1196, หารด้วย 7: อินพุตเท็จ: 1197, หารด้วย 7: อินพุตจริง: 1198, หารด้วย 7: อินพุตเท็จ: 1199, หารด้วย 7: เท็จหารด้วย 7: อินพุตเท็จ: 1185, หารด้วย 7: อินพุตเท็จ: 1186, หารด้วย 7: อินพุตเท็จ: 1187, หารด้วย 7: อินพุตเท็จ: 1188, หารด้วย 7: อินพุตเท็จ: 1189, หารด้วย 7: เท็จ อินพุต: 1190, หารด้วย 7: อินพุตจริง: 1191, หารด้วย 7: อินพุตเท็จ: 1192, หารด้วย 7: อินพุตเท็จ: 1193, หารด้วย 7: อินพุตเท็จ: 1194, หารด้วย 7: อินพุตเท็จ: 1195, หาร โดย 7: อินพุตเท็จ: 1196, หารด้วย 7: อินพุตเท็จ: 1197, หารด้วย 7: อินพุตจริง: 1198, หารด้วย 7: อินพุตเท็จ: 1199, หารด้วย 7: เท็จหารด้วย 7: อินพุตเท็จ: 1185, หารด้วย 7: อินพุตเท็จ: 1186, หารด้วย 7: อินพุตเท็จ: 1187, หารด้วย 7: อินพุตเท็จ: 1188, หารด้วย 7: อินพุตเท็จ: 1189, หารด้วย 7: เท็จ อินพุต: 1190, หารด้วย 7: อินพุตจริง: 1191, หารด้วย 7: อินพุตเท็จ: 1192, หารด้วย 7: อินพุตเท็จ: 1193, หารด้วย 7: อินพุตเท็จ: 1194, หารด้วย 7: อินพุตเท็จ: 1195, หาร โดย 7: อินพุตเท็จ: 1196, หารด้วย 7: อินพุตเท็จ: 1197, หารด้วย 7: อินพุตจริง: 1198, หารด้วย 7: อินพุตเท็จ: 1199, หารด้วย 7: เท็จหารด้วย 7: อินพุตที่แท้จริง: 1198, หารด้วย 7: อินพุตที่เป็นเท็จ: 1199, หารด้วย 7: เท็จหารด้วย 7: อินพุตที่แท้จริง: 1198, หารด้วย 7: อินพุตที่เป็นเท็จ: 1199, หารด้วย 7: เท็จ


คำอธิบาย:

ฉันได้คำตอบ 2 ข้อ พวกเขาทั้งคู่เป็นคนดี:
1. บาปเป็นการกระตุ้น
2. พื้น (หรือ int) เป็นการกระตุ้น

มันเป็นไปไม่ได้ที่จะหาน้ำหนักที่ดีที่สุดโดยใช้การไล่ระดับสีและฉันใช้อัลกอริทึมทางพันธุกรรม (จากscikit-opt )


สวัสดีผู้ชายยินดีต้อนรับ CV และขอบคุณสำหรับคำตอบโดยละเอียดของคุณ คุณช่วยเพิ่มคำอธิบายลงในรหัสที่คุณเขียนได้ไหม
Ferdi

ฉันได้รับโซลูชั่นที่ดี 2 ข้อดูที่นี่ 1. บาปเป็นการเปิดใช้งาน 2. ชั้น (หรือ int) เป็นการเปิดใช้งาน
guofei9987
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.