3. 3. KI-Programmierung mit Python

Einführung

Wenn Sie plötzlich auf diese Seite gelangen, lesen Sie bitte Elternseite.

Zweck hier

Verwenden Sie pycharm, um AI in der Python-Sprache zu codieren. Sie können den Code kopieren und einfügen. Sie können dies auch tun, wenn Sie die Bedeutung im Quellcode nicht verstehen.

Starten der Entwicklungsumgebung

--pycharm Startbildschirm (mnist Projekt wurde gestartet) Pycharm021.png

KI-Programmierung mit Python

main.py


# ------------------------------------------------------------------------------------------------------------
# CNN(Convolutional Neural Network)Versuchen Sie MNIST mit
# ------------------------------------------------------------------------------------------------------------
import numpy as np
import matplotlib.pyplot as plt
from sklearn.metrics import confusion_matrix
from keras.datasets import mnist
from keras import backend as ke
from keras.utils import np_utils
from keras.models import Sequential
from keras.layers import Dense, Dropout, Flatten
from keras.layers import Conv2D, MaxPooling2D


# ------------------------------------------------------------------------------------------------------------
#Hyperparameter
# ------------------------------------------------------------------------------------------------------------
#Hyperparameter ⇒ Stapelgröße, Anzahl der Epochen
#Zum Beispiel sind Trainingsdaten 60,Mit 000 Stück, Charge_Größe 6,Wenn es 000 ist,
#60, um alle Trainingsdaten zu verwenden,000 Stück ÷ 6,000 = 10 Parameteraktualisierungen werden durchgeführt.
#Dies nennt man 1 Epoche. Wenn die Epoche 10 ist, wird der Parameter 10 × 10 = 100 Mal aktualisiert.
#Die Epochenzahl ist eine Verlustfunktion(Kostenfunktion)Stellen Sie ein, bis der Wert von fast konvergiert.
batch_size = 6000           #Chargengröße
epochs = 5                  #Anzahl der Epochen


# ------------------------------------------------------------------------------------------------------------
#Richtige / falsche Tabellenfunktion
# ------------------------------------------------------------------------------------------------------------
def show_prediction():
    n_show = 100                                 #Es ist schwierig, alle anzuzeigen, also einige anzuzeigen
    y = model.predict(X_test)
    plt.figure(2, figsize=(10, 10))
    plt.gray()
    for i in range(n_show):
        plt.subplot(10, 10, (i+1))               # subplot(Anzahl der Zeilen,Anzahl der Spalten,Grundstücksnummer)
        x = X_test[i, :]
        x = x.reshape(28, 28)
        plt.pcolor(1 - x)
        wk = y[i, :]
        prediction = np.argmax(wk)
        plt.text(22, 25.5, "%d" % prediction, fontsize=12)
        if prediction != np.argmax(y_test[i, :]):
            plt.plot([0, 27], [1, 1], color='red', linewidth=10)
        plt.xlim(0, 27)
        plt.ylim(27, 0)
        plt.xticks([], "")
        plt.yticks([], "")


# ------------------------------------------------------------------------------------------------------------
#Anzeige des Keras-Backends
# ------------------------------------------------------------------------------------------------------------
# print(ke.backend())
# print(ke.floatx())


# ------------------------------------------------------------------------------------------------------------
#Erfassung von MNIST-Daten
# ------------------------------------------------------------------------------------------------------------
#Es braucht Zeit, da der Download beim ersten Mal erfolgt
# 60,10 Schwarzweißbilder mit 10 Zahlen, dargestellt durch 000 28x28 Punkte und 10,000 Testbilddatensatz
#Speicherort herunterladen:'~/.keras/datasets/'
#* Wenn der MNIST-Daten-Download NG ist, überprüfen Sie die PROXY-Einstellungen.
#
#MNIST-Daten
#├ Lehrerdaten(60,000 Stück)
#│ ├ Bilddaten
#│ └ Etikettendaten
#  │
#└ Überprüfungsdaten(10,000 Stück)
#├ Bilddaten
#└ Daten beschriften

#↓ Lehrerdaten ↓ Verifizierungsdaten
(X_train, y_train), (X_test, y_test) = mnist.load_data()
#↑ Bild ↑ Etikett ↑ Bild ↑ Etikett


# ------------------------------------------------------------------------------------------------------------
#Bilddaten(Lehrerdaten, Verifizierungsdaten)Umformen
# ------------------------------------------------------------------------------------------------------------
img_rows, img_cols = 28, 28
if ke.image_data_format() == 'channels_last':
    X_train = X_train.reshape(X_train.shape[0], img_rows, img_cols, 1)
    X_test = X_test.reshape(X_test.shape[0], img_rows, img_cols, 1)
    input_shape = (img_rows, img_cols, 1)
else:
    X_train = X_train.reshape(X_train.shape[0], 1, img_rows, img_cols)
    X_test = X_test.reshape(X_test.shape[0], 1, img_rows, img_cols)
    input_shape = (1, img_rows, img_cols)

#Formatieren des Arrays und Konvertieren des Farbbereichs von 0 bis 255 bis 0 bis 1
X_train = X_train.astype('float32')
X_test = X_test.astype('float32')
X_train /= 255
X_test /= 255


# ------------------------------------------------------------------------------------------------------------
#Daten beschriften(Lehrerdaten, Verifizierungsdaten)Vektorisierung von
# ------------------------------------------------------------------------------------------------------------
y_train = np_utils.to_categorical(y_train)      #Vektorisierung von Lehreretiketten
y_test = np_utils.to_categorical(y_test)        #Vektorisierung des Validierungsetiketts


# ------------------------------------------------------------------------------------------------------------
#Netzwerkdefinition(keras)
# ------------------------------------------------------------------------------------------------------------
print("")
print("● Netzwerkdefinition")
model = Sequential()

#Eingabeebene 28 × 28 × 3
model.add(Conv2D(16, kernel_size=(3, 3), activation='relu', input_shape=input_shape, padding='same'))     #01 Schicht: 16 Faltschichten
model.add(Conv2D(32, (3, 3), activation='relu', padding='same'))                                          #02 Schicht: 32 Faltschichten
model.add(MaxPooling2D(pool_size=(2, 2)))                                                                 #03 Schicht: Pooling Schicht
model.add(Dropout(0.25))                                                                                  #Schicht 04: Ausfall
model.add(Conv2D(32, (3, 3), activation='relu', padding='same'))                                          #05 Schicht: 64 Faltschichten
model.add(MaxPooling2D(pool_size=(2, 2)))                                                                 #06 Schicht: Pooling Schicht
model.add(Flatten())                                                                                      #08 Ebene: Dimensionskonvertierung
model.add(Dense(128, activation='relu'))                                                                  #09 Schicht: voll kombinierte Ausgabe 128
model.add(Dense(10, activation='softmax'))                                                                #10 Schichten: vollständig gekoppelter Ausgang 10

#Modellanzeige
model.summary()

#kompilieren
#Verlustfunktion: kategorisch_crossentropy (Kreuzentropie)
#Optimierung: Adam
model.compile(loss='categorical_crossentropy',
              optimizer='Adam',
              metrics=['accuracy'])

print("")
print("● Beginnen Sie zu lernen")
f_verbose = 1  # 0:Keine Anzeige, 1: Detailanzeige, 2: Anzeige
hist = model.fit(X_train, y_train,
                 batch_size=batch_size,
                 epochs=epochs,
                 validation_data=(X_test, y_test),
                 verbose=f_verbose)


# ------------------------------------------------------------------------------------------------------------
#Verlustwertdiagramm
# ------------------------------------------------------------------------------------------------------------
# Accuracy (Richtige Antwortrate)
plt.plot(range(epochs), hist.history['accuracy'], marker='.')
plt.plot(range(epochs), hist.history['val_accuracy'], marker='.')
plt.title('Accuracy')
plt.ylabel('accuracy')
plt.xlabel('epoch')
plt.legend(['train', 'test'], loc='lower right')
plt.show()

# loss (Verlustfunktion)
plt.plot(range(epochs), hist.history['loss'], marker='.')
plt.plot(range(epochs), hist.history['val_loss'], marker='.')
plt.title('loss Function')
plt.ylabel('loss')
plt.xlabel('epoch')
plt.legend(['train', 'test'], loc='upper right')
plt.show()


# ------------------------------------------------------------------------------------------------------------
#Validierung der Testdaten
# ------------------------------------------------------------------------------------------------------------
print("")
print("● Überprüfungsergebnis")
t_verbose = 1  # 0:Keine Anzeige, 1: Detailanzeige, 2: Anzeige
score = model.evaluate(X_test, y_test, verbose=t_verbose)

print("")
print("batch_size = ", batch_size)
print("epochs = ", epochs)

print('Test loss:', score[0])
print('Test accuracy:', score[1])


print("")
print("● Verwirrungsmatrix(Verwirrung Matrix)Horizontal: Identifikationsergebnis, Vertikal: Richtige Antwortdaten")
predict_classes = model.predict_classes(X_test[1:60000, ], batch_size=batch_size)
true_classes = np.argmax(y_test[1:60000], 1)
print(confusion_matrix(true_classes, predict_classes))


# ------------------------------------------------------------------------------------------------------------
#Richtige / falsche Tabellenanzeige
# ------------------------------------------------------------------------------------------------------------
show_prediction()
plt.show()

--Bitte kopieren Sie diesen Quellcode in das vorherige Feld (innerhalb des roten Rahmens). prog001.png

--Klicken Sie auf der Registerkarte im unteren Bereich auf [Probrems], um den Inhalt zu überprüfen. Im roten Linienrahmen wie unten gezeigt `! Wenn es einen roten Kreis gibt, ist die Bibliothek nicht ausreichend und ein Fehler ist aufgetreten. prog009.png

prog001+.png

No. Fehlender Bibliotheksname Erforderlicher Paketname
1 keras keras
2 numpy numpy
3 matplotlib matplotlib
4 sklearn scikit-learn

Paketinstallation

● Fügen Sie ein Paket von anaconda hinzu

  1. Starten Sie anaconda und klicken Sie auf [Envionments] -> [ python37]

● Installieren Sie das Keras-Paket

  1. Ändern Sie [Installed] in [ All]
  2. Geben Sie [keras] in das Suchfeld ein, um nach Keras-Paketen zu suchen
  3. Setzen Sie das Kontrollkästchen [keras] auf ON
  4. Klicken Sie zum Anpassen unten rechts auf [Übernehmen] prog003.png

--Wenn das Meldungsfeld "Pakete installieren" angezeigt wird, klicken Sie auf [Übernehmen], um das Keras-Paket zu installieren. prog004.png

● Installieren Sie das numpy-Paket

  1. Geben Sie [numpy] in das Suchfeld ein, um nach numpy-Paketen zu suchen
  2. Ich konnte bestätigen, dass das numpy-Paket installiert wurde.

Da Keras Numpy verwendet, wurde Numpy aufgrund der Abhängigkeit automatisch installiert, wenn das Keras-Paket installiert wurde. So konnte ich die Installationsarbeiten von numpy weglassen. prog005.png

● Installieren Sie das matplotlib-Paket

prog006.png

  1. Geben Sie [matplotlib] in das Suchfeld ein, um nach dem matplotlib-Paket zu suchen.
  2. Setzen Sie das Kontrollkästchen [matplotlib] auf ON
  3. Klicken Sie zum Anpassen unten rechts auf [Übernehmen]
  4. Wenn das Meldungsfeld "Pakete installieren" angezeigt wird, klicken Sie auf ["Übernehmen"], um das matplotlib-Paket zu installieren.

● Installieren Sie das scikit-learn-Paket

  1. Geben Sie [scikit-learn] in das Suchfeld ein, um nach dem scikit-learn-Paket zu suchen.
  2. Setzen Sie das Kontrollkästchen [scikit-learn] auf ON
  3. Klicken Sie zum Anpassen unten rechts auf [Übernehmen]
  4. Wenn das Meldungsfeld "Pakete installieren" angezeigt wird, klicken Sie auf [Übernehmen], um das scicit-learn-Paket zu installieren.

Programmausführung

  1. Klicken Sie auf [Probleme]
  2. Vergewissern Sie sich, dass in Problemen kein "! Roter Kreis" angezeigt wird

prog009.png prog010.png

--Klicken Sie oben rechts auf "", um das Programm auszuführen. prog011.png

Ausgabeergebnis

――Wenn Sie es richtig machen können, erhalten Sie die folgenden Ergebnisse.

C:\Users\xxxx\anaconda3\envs\python37\python.exe C:/Users/xxxx/PycharmProjects/mnist_sample/qiita.py
Using TensorFlow backend.

● Netzwerkdefinition
2020-08-06 11:36:11.346263: I tensorflow/core/platform/cpu_feature_guard.cc:142] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX AVX2
Model: "sequential_1"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
conv2d_1 (Conv2D)            (None, 28, 28, 16)        160       
_________________________________________________________________
conv2d_2 (Conv2D)            (None, 28, 28, 32)        4640      
_________________________________________________________________
max_pooling2d_1 (MaxPooling2 (None, 14, 14, 32)        0         
_________________________________________________________________
dropout_1 (Dropout)          (None, 14, 14, 32)        0         
_________________________________________________________________
conv2d_3 (Conv2D)            (None, 14, 14, 32)        9248      
_________________________________________________________________
max_pooling2d_2 (MaxPooling2 (None, 7, 7, 32)          0         
_________________________________________________________________
flatten_1 (Flatten)          (None, 1568)              0         
_________________________________________________________________
dense_1 (Dense)              (None, 128)               200832    
_________________________________________________________________
dense_2 (Dense)              (None, 10)                1290      
=================================================================
Total params: 216,170
Trainable params: 216,170
Non-trainable params: 0
_________________________________________________________________

● Beginnen Sie zu lernen
Train on 60000 samples, validate on 10000 samples
Epoch 1/5
2020-08-06 11:36:12.480915: W tensorflow/core/framework/cpu_allocator_impl.cc:81] Allocation of 602112000 exceeds 10% of system memory.
2020-08-06 11:36:14.075159: W tensorflow/core/framework/cpu_allocator_impl.cc:81] Allocation of 602112000 exceeds 10% of system memory.

 6000/60000 [==>...........................] - ETA: 36s - loss: 2.3063 - accuracy: 0.0653
12000/60000 [=====>........................] - ETA: 32s - loss: 2.2858 - accuracy: 0.1563
18000/60000 [========>.....................] - ETA: 29s - loss: 2.2630 - accuracy: 0.2346
24000/60000 [===========>..................] - ETA: 24s - loss: 2.2374 - accuracy: 0.2971
30000/60000 [==============>...............] - ETA: 20s - loss: 2.2083 - accuracy: 0.3415
36000/60000 [=================>............] - ETA: 16s - loss: 2.1742 - accuracy: 0.3779
42000/60000 [====================>.........] - ETA: 12s - loss: 2.1342 - accuracy: 0.4095
48000/60000 [=======================>......] - ETA: 8s - loss: 2.0883 - accuracy: 0.4363 
54000/60000 [==========================>...] - ETA: 4s - loss: 2.0373 - accuracy: 0.4610
60000/60000 [==============================] - 44s 733us/step - loss: 1.9787 - accuracy: 0.4864 - val_loss: 1.3384 - val_accuracy: 0.7674
Epoch 2/5

 6000/60000 [==>...........................] - ETA: 39s - loss: 1.3002 - accuracy: 0.7305
12000/60000 [=====>........................] - ETA: 37s - loss: 1.2238 - accuracy: 0.7381
18000/60000 [========>.....................] - ETA: 33s - loss: 1.1505 - accuracy: 0.7432
24000/60000 [===========>..................] - ETA: 27s - loss: 1.0788 - accuracy: 0.7513
30000/60000 [==============>...............] - ETA: 23s - loss: 1.0145 - accuracy: 0.7597
36000/60000 [=================>............] - ETA: 18s - loss: 0.9617 - accuracy: 0.7652
42000/60000 [====================>.........] - ETA: 14s - loss: 0.9165 - accuracy: 0.7698
48000/60000 [=======================>......] - ETA: 9s - loss: 0.8742 - accuracy: 0.7754 
54000/60000 [==========================>...] - ETA: 4s - loss: 0.8390 - accuracy: 0.7804
60000/60000 [==============================] - 50s 831us/step - loss: 0.8084 - accuracy: 0.7856 - val_loss: 0.4861 - val_accuracy: 0.8541
Epoch 3/5

 6000/60000 [==>...........................] - ETA: 41s - loss: 0.4924 - accuracy: 0.8445
12000/60000 [=====>........................] - ETA: 36s - loss: 0.4970 - accuracy: 0.8453
18000/60000 [========>.....................] - ETA: 32s - loss: 0.5020 - accuracy: 0.8486
24000/60000 [===========>..................] - ETA: 28s - loss: 0.5005 - accuracy: 0.8508
30000/60000 [==============>...............] - ETA: 23s - loss: 0.4866 - accuracy: 0.8547
36000/60000 [=================>............] - ETA: 19s - loss: 0.4774 - accuracy: 0.8578
42000/60000 [====================>.........] - ETA: 14s - loss: 0.4730 - accuracy: 0.8603
48000/60000 [=======================>......] - ETA: 9s - loss: 0.4721 - accuracy: 0.8622 
54000/60000 [==========================>...] - ETA: 4s - loss: 0.4641 - accuracy: 0.8648
60000/60000 [==============================] - 52s 862us/step - loss: 0.4574 - accuracy: 0.8666 - val_loss: 0.3624 - val_accuracy: 0.9004
Epoch 4/5

 6000/60000 [==>...........................] - ETA: 44s - loss: 0.3941 - accuracy: 0.8850
12000/60000 [=====>........................] - ETA: 40s - loss: 0.3863 - accuracy: 0.8882
18000/60000 [========>.....................] - ETA: 34s - loss: 0.3731 - accuracy: 0.8912
24000/60000 [===========>..................] - ETA: 29s - loss: 0.3659 - accuracy: 0.8943
30000/60000 [==============>...............] - ETA: 25s - loss: 0.3545 - accuracy: 0.8971
36000/60000 [=================>............] - ETA: 20s - loss: 0.3461 - accuracy: 0.8987
42000/60000 [====================>.........] - ETA: 15s - loss: 0.3417 - accuracy: 0.9001
48000/60000 [=======================>......] - ETA: 10s - loss: 0.3421 - accuracy: 0.9008
54000/60000 [==========================>...] - ETA: 5s - loss: 0.3367 - accuracy: 0.9023 
60000/60000 [==============================] - 52s 874us/step - loss: 0.3332 - accuracy: 0.9033 - val_loss: 0.2740 - val_accuracy: 0.9225
Epoch 5/5

 6000/60000 [==>...........................] - ETA: 44s - loss: 0.2830 - accuracy: 0.9168
12000/60000 [=====>........................] - ETA: 39s - loss: 0.2939 - accuracy: 0.9151
18000/60000 [========>.....................] - ETA: 35s - loss: 0.2872 - accuracy: 0.9168
24000/60000 [===========>..................] - ETA: 30s - loss: 0.2782 - accuracy: 0.9193
30000/60000 [==============>...............] - ETA: 25s - loss: 0.2782 - accuracy: 0.9188
36000/60000 [=================>............] - ETA: 20s - loss: 0.2733 - accuracy: 0.9200
42000/60000 [====================>.........] - ETA: 15s - loss: 0.2686 - accuracy: 0.9217
48000/60000 [=======================>......] - ETA: 10s - loss: 0.2684 - accuracy: 0.9222
54000/60000 [==========================>...] - ETA: 4s - loss: 0.2654 - accuracy: 0.9233 
60000/60000 [==============================] - 52s 872us/step - loss: 0.2634 - accuracy: 0.9236 - val_loss: 0.2180 - val_accuracy: 0.9360

● Überprüfungsergebnis

   32/10000 [..............................] - ETA: 5s
  320/10000 [..............................] - ETA: 2s
  608/10000 [>.............................] - ETA: 2s
  928/10000 [=>............................] - ETA: 1s
 1248/10000 [==>...........................] - ETA: 1s
 1568/10000 [===>..........................] - ETA: 1s
 1920/10000 [====>.........................] - ETA: 1s
 2272/10000 [=====>........................] - ETA: 1s
 2624/10000 [======>.......................] - ETA: 1s
 2976/10000 [=======>......................] - ETA: 1s
 3328/10000 [========>.....................] - ETA: 1s
 3680/10000 [==========>...................] - ETA: 1s
 4032/10000 [===========>..................] - ETA: 1s
 4384/10000 [============>.................] - ETA: 1s
 4736/10000 [=============>................] - ETA: 0s
 5088/10000 [==============>...............] - ETA: 0s
 5408/10000 [===============>..............] - ETA: 0s
 5728/10000 [================>.............] - ETA: 0s
 6048/10000 [=================>............] - ETA: 0s
 6368/10000 [==================>...........] - ETA: 0s
 6560/10000 [==================>...........] - ETA: 0s
 6816/10000 [===================>..........] - ETA: 0s
 7104/10000 [====================>.........] - ETA: 0s
 7392/10000 [=====================>........] - ETA: 0s
 7680/10000 [======================>.......] - ETA: 0s
 8000/10000 [=======================>......] - ETA: 0s
 8320/10000 [=======================>......] - ETA: 0s
 8640/10000 [========================>.....] - ETA: 0s
 8960/10000 [=========================>....] - ETA: 0s
 9280/10000 [==========================>...] - ETA: 0s
 9600/10000 [===========================>..] - ETA: 0s
 9920/10000 [============================>.] - ETA: 0s
10000/10000 [==============================] - 2s 196us/step

batch_size =  6000
epochs =  5
Test loss: 0.21799209741055967
Test accuracy: 0.9359999895095825

● Verwirrungsmatrix(Verwirrung Matrix)Horizontal: Identifikationsergebnis, Vertikal: Richtige Antwortdaten
[[ 966    0    1    1    0    1    6    1    4    0]
 [   0 1108    4    2    0    0    3    1   17    0]
 [  12    2  954   18    7    0    7    8   21    3]
 [   2    2    7  938    0   24    0   11   19    7]
 [   1    2    4    1  908    0   10    3    5   48]
 [   5    1    3   18    0  834    9    2   14    6]
 [  18    4    2    2    6   14  906    2    4    0]
 [   1    5   26    7    7    1    0  916    4   60]
 [  10    0    5   23    9   18    8    4  878   19]
 [  10    5    3   13    8    6    0    7    6  951]]

Process finished with exit code 0

Richtige Antwortrate

――Sie können sehen, dass die richtige Antwortrate stetig zunimmt, wenn die Anzahl der Lernvorgänge zunimmt. exe001.PNG

Ergebnis der Verlustfunktion

――Sie können feststellen, dass die Verlustrate mit zunehmender Anzahl von Lernprozessen stetig abnimmt. exe002.PNG

Errata

――Es gibt 10.000 Verifizierungsdaten, aber es ist schwierig, alle auszugeben. Daher geben wir die Ergebnisse bis zu den ersten 100 aus. ――Die durch die rote Linie angezeigte ist diejenige, bei der AI einen Erkennungsfehler verursacht hat.

das ist alles

Recommended Posts

3. 3. KI-Programmierung mit Python
Python-Programmierung mit Atom
Wettbewerbsfähige Programmierung mit Python
Programmieren mit Python Flask
Programmieren mit Python und Tkinter
Erstelle Puyopuyo AI mit Python
Netzwerkprogrammierung mit Python Scapy
[Python] Mit Pokemon erlernte objektorientierte Programmierung
Einfache Python + OpenCV-Programmierung mit Canopy
FizzBuzz in Python3
Python-Programmierhinweis
Scraping mit Python
Statistik mit Python
Scraping mit Python
Python mit Go
Twilio mit Python
In Python integrieren
Spielen Sie mit 2016-Python
AES256 mit Python
Getestet mit Python
Programmieren mit Python
Python beginnt mit ()
mit Syntax (Python)
Bingo mit Python
Zundokokiyoshi mit Python
Excel mit Python
Mikrocomputer mit Python
Mit Python besetzen
Wettbewerbsprogrammierung mit Python Lokale Umgebungseinstellungen
[Episode 3] Anfänger haben Numeron AI mit Python ausprobiert
"Python AI Programmierung" ab 0 für Windows
[Episode 0] Anfänger haben Numeron AI mit Python ausprobiert
[Episode 1] Anfänger haben Numeron AI mit Python ausprobiert
Aufbau einer KI / maschinellen Lernumgebung mit Python
Serielle Kommunikation mit Python
Zip, entpacken mit Python
Django 1.11 wurde mit Python3.6 gestartet
Primzahlbeurteilung mit Python
Socket-Kommunikation mit Python
Datenanalyse mit Python 2
Versuchen Sie es mit Python.
Asynchrone Programmierung mit libev # 2
Python lernen mit ChemTHEATER 03
Sequentielle Suche mit Python
"Objektorientiert" mit Python gelernt
Wie man Spaß am Programmieren mit Minecraft hat (Ruby, Python)
Führen Sie Python mit VBA aus
Umgang mit Yaml mit Python
Löse AtCoder 167 mit Python
Serielle Kommunikation mit Python
[Python] Verwenden Sie JSON mit Python
Python lernen mit ChemTHEATER 05-1
Führen Sie prepDE.py mit python3 aus
1.1 Erste Schritte mit Python
Tweets mit Python sammeln
Binarisierung mit OpenCV / Python
Kernel-Methode mit Python
Nicht blockierend mit Python + uWSGI
Scraping mit Python + PhantomJS
[Letzte Geschichte] Anfänger haben Numeron AI mit Python ausprobiert