[PYTHON] Mémo d'auto-apprentissage "Deep Learning from scratch" (n ° 13) Essayez d'utiliser Google Colaboratory

En lisant "Deep Learning from scratch" (écrit par Yasuki Saito, publié par O'Reilly Japan), je noterai les sites auxquels j'ai fait référence. Partie 12 ← → Partie 14

J'ai appris en exécutant Jupyter Lab sur mon propre ordinateur, mais des erreurs de mémoire ont commencé à se produire fréquemment et je ne peux pas continuer.

donc

J'aimerais essayer le Colaboratory de Google.

Colaboratory

Il ne semble pas y avoir de mot anglais pour Colaboratory. C'est le nom que Google a donné à son service, Collaboration collaborate + laboratoire laboratoire Est-ce un mot inventé? S'il s'agit d'un co + laboratoire, est-il possible de le lire en collaboration? Soulignez le sens de la collaboration Si vous pensez à une histoire collabora (te) + (labora), vous pouvez la lire comme une histoire collaborative, mais j'augmenterai de un.

De nombreux articles sur Qiita

Informations sur le colaboratoire à Qiita

Alors, j'irai petit à petit.

Après tout, je m'inquiète de la structure des dossiers et des fichiers sur le lecteur

Jusqu'à présent, j'ai essayé diverses choses, et lorsque j'exécute un programme, je fais référence à de nombreuses bibliothèques, fichiers d'entrée et fichiers pkl. Ainsi, afin de les créer et de les référencer sur Google Drive, vous devez d'abord comprendre la structure des dossiers et des fichiers et comment les spécifier.

Traverser

Pour le moment, il semble qu'il n'y ait pas de problème si vous montez le lecteur puis passez le chemin vers le dossier où se trouvent la bibliothèque et les fichiers.

#Support de lecteur
from google.colab import drive
drive.mount('/content/drive')

Il semble que vous puissiez nommer vous-même la partie lecteur de / content / drive. Cette commande vous donne-t-elle un nom pour utiliser Google Drive dans votre script? Ainsi, sous ce lecteur, il y a un dossier My Drive comme votre propre zone, et sous lequel vous pouvez créer un dossier pour exécuter des scripts, Notebook (~ .ipynb), etc.

Cela signifie que toutes les ressources disponibles dans Colaboratory sont sous / content / drivename / My Drive. Cependant, puisque le répertoire courant est / content, vous devez être prudent lorsque vous spécifiez un fichier avec un chemin relatif. Doit être "nom du lecteur / mon lecteur / nom du fichier" Bien sûr, vous pouvez également modifier le lecteur actuel avec la commande os.chdir (). La modification du lecteur actuel ne fonctionne que dans ce bloc-notes et ne semble pas affecter les autres blocs-notes.

J'ai créé un dossier, Colab Notebooks, pour le séparer des autres fichiers, et deep_learning sous celui-ci en tant que dossier pour placer les programmes d'exemple de ce livre. J'ai également créé des dossiers communs et des ensembles de données que j'utilise souvent dans les programmes de ce livre, et y ai placé les programmes et les données téléchargés.

Ensuite, transmettez le chemin afin que les programmes sous ce dossier puissent être référencés de n'importe où.

#Ajouter un chemin
import sys
sys.path.append('/content/drive/My Drive/Colab Notebooks/deep_learning/common')
sys.path.append('/content/drive/My Drive/Colab Notebooks/deep_learning/dataset')

Modifiez les programmes qui y font référence comme suit.

#J'avais l'habitude de faire cela lors de la spécification de modules dans l'ensemble de données de dossier dans JupyterLab
from dataset.mnist import load_mnist

#C'est bien si tu passes par le col
from mnist import load_mnist

Il existe de nombreux programmes qui font référence à la bibliothèque commune, il semble donc être assez difficile de résoudre ce problème.

J'ai essayé diverses fonctions connexes

import os
print(os.getcwd())  #Répertoire actuel
print(os.pardir) #Dossier Parent
print(os.path.dirname(os.path.abspath(__file__))) #Doit retourner le répertoire contenant ce fichier de script, mais une erreur en mode interactif

/content .. --------------------------------------------------------------------------- NameError Traceback (most recent call last) in () 2 print (os.getcwd ()) # répertoire courant 3 print(os.pardir) ----> 4 print(os.path.dirname(os.path.abspath(_file_))) 5 NameError: name '_file_' is not defined

Le mode interactif de Google Colaboratory semble fonctionner dans le répertoire / contenu actuel. L'exécution du script ci-dessus dans un dossier différent aura le même résultat, le répertoire actuel sera / content. De plus, il semble que \ __ file \ __ ne puisse pas être utilisé en mode interactif. Puisque le répertoire courant est toujours / content, cela n'a aucun sens de l'utiliser.

Cependant, il semble que \ __file \ __ puisse être utilisé dans le script enregistré avec un nom de fichier. Le script suivant fonctionne correctement et charge les fichiers dans le même dossier que le script.

# coding: utf-8
import sys, os
sys.path.append(os.pardir)  #Paramètres d'importation des fichiers dans le répertoire parent
import numpy as np
from mnist import load_mnist
import matplotlib.pyplot as plt

def showImg(x):
    example = x.reshape((28, 28))
    plt.figure()
    plt.xticks([])
    plt.yticks([])
    plt.grid(False)
    plt.imshow(example, cmap=plt.cm.binary)
    plt.show()
    return

(x_train, t_train), (x_test, t_test) = load_mnist(flatten=True, normalize=False)

img = x_train[1]
label = t_train[1]
print(img.shape)  # (784,)
img = img.reshape(28, 28)  #Transformez la forme en taille d'image d'origine
print(img.shape)  # (28, 28)
print(label)  # 0
showImg(img)

(784,) (28, 28) 0

Dans le mnist.py importé, le fichier est spécifié comme ceci

mnist.Script qui définit le répertoire des données mnist avec py


dataset_dir = os.path.dirname(os.path.abspath(__file__))
save_file = dataset_dir + "/mnist.pkl"

Vous pouvez lire mnist.pkl dans le dossier «/ content / drive / My Drive / Colab Notebooks / deep_learning / dataset» où se trouve mnist.py.

Lors de la spécification d'un fichier en mode interactif, il semble plus sûr de spécifier un chemin absolu

# coding: utf-8
import matplotlib.pyplot as plt
from matplotlib.image import imread

img = imread('/content/drive/My Drive/Colab Notebooks/deep_learning/dataset/lena.png') #Chargement des images
plt.imshow(img)

plt.show()

Cela semble fonctionner en quelque sorte, donc après avoir exécuté le programme dans le livre et l'avoir vérifié, Je vais essayer de distinguer les photos de chiens et de chats qui étaient trop lourdes pour bouger.

Partie 12 ← → Partie 14 Cliquez ici pour la liste des mémos, etc. Glossaire illisible

Site référencé

Importer des fichiers .py sur Google Drive avec Google Colaboratory Découvrez pourquoi vous ne pouvez pas obtenir le nom de répertoire d'un script en cours d'exécution en utilisant file Bienvenue dans Colaboratory Conseils pratiques d'apprentissage en profondeur sur la collaboration

Recommended Posts

Mémo d'auto-apprentissage "Deep Learning from scratch" (n ° 13) Essayez d'utiliser Google Colaboratory
Mémo d'auto-apprentissage «Deep Learning from scratch» (n ° 11) CNN
Mémo d'auto-apprentissage «Deep Learning from scratch» (n ° 19) Augmentation des données
"Deep Learning from scratch" Mémo d'auto-apprentissage (n ° 14) Exécutez le programme du chapitre 4 sur Google Colaboratory
Mémo d'auto-apprentissage «Deep Learning from scratch» (n ° 18) One! Miaou! Grad-CAM!
Mémo d'auto-apprentissage "Deep Learning from scratch" (partie 12) Deep learning
Mémo d'auto-apprentissage "Deep Learning from scratch" (n ° 15) Tutoriel pour débutants TensorFlow
Mémo d'auto-apprentissage «Deep Learning from scratch» (n ° 10-2) Valeur initiale du poids
Mémo d'auto-apprentissage "Deep Learning from scratch" (glossaire illisible)
"Deep Learning from scratch" Mémo d'auto-apprentissage (n ° 9) Classe MultiLayerNet
Mémo d'auto-apprentissage «Deep Learning from scratch» (10) Classe MultiLayerNet
"Deep Learning from scratch" Mémo d'auto-apprentissage (n ° 16) J'ai essayé de créer SimpleConvNet avec Keras
"Deep Learning from scratch" Mémo d'auto-apprentissage (n ° 17) J'ai essayé de créer DeepConvNet avec Keras
[Mémo d'apprentissage] Le Deep Learning fait de zéro [Chapitre 7]
Deep learning / Deep learning made from scratch Chapitre 6 Mémo
[Mémo d'apprentissage] Deep Learning fait de zéro [Chapitre 5]
[Mémo d'apprentissage] Le Deep Learning fait de zéro [Chapitre 6]
[Mémo d'apprentissage] Deep Learning fait de zéro [~ Chapitre 4]
Un mémo lors de l'exécution de l'exemple de code de Deep Learning créé à partir de zéro avec Google Colaboratory
Apprentissage profond à partir de zéro
Deep Learning from scratch Chapter 2 Perceptron (lecture du mémo)
[Mémo d'apprentissage] Apprentissage profond à partir de zéro ~ Mise en œuvre de l'abandon ~
Apprentissage profond à partir de zéro 1 à 3 chapitres
Deep learning / Deep learning from scratch 2 Chapitre 4 Mémo
Deep learning / Deep learning made from scratch Chapitre 3 Mémo
Apprentissage profond à partir de zéro (calcul des coûts)
Deep Learning / Deep Learning à partir de Zero 2 Chapitre 7 Mémo
Deep Learning / Deep Learning à partir de Zero 2 Chapitre 8 Mémo
Deep learning / Deep learning made from scratch Chapitre 5 Mémo
Deep learning / Deep learning made from scratch Chapitre 4 Mémo
Deep learning / Deep learning from scratch 2 Chapitre 3 Mémo
Mémo d'apprentissage profond créé à partir de zéro
Deep Learning / Deep Learning à partir de Zero 2 Chapitre 6 Mémo
Mémo d'auto-apprentissage "Deep Learning from scratch" (partie 8) J'ai dessiné le graphique du chapitre 6 avec matplotlib
Pourquoi ModuleNotFoundError: Aucun module nommé'dataset.mnist 'n'apparaît dans "Deep Learning from scratch".
Apprentissage profond à partir de zéro (propagation vers l'avant)
"Deep Learning from scratch" avec Haskell (inachevé)
[Windows 10] Construction de l'environnement "Deep Learning from scratch"
Enregistrement d'apprentissage de la lecture "Deep Learning from scratch"
[Deep Learning from scratch] À propos de l'optimisation des hyper paramètres
Deep Learning from scratch ① Chapitre 6 "Techniques liées à l'apprentissage"
GitHub du bon livre "Deep Learning from scratch"
Résumé Python vs Ruby "Deep Learning from scratch"
[Deep Learning from scratch] Valeur initiale du poids du réseau neuronal utilisant la fonction sigmoïde
[Deep Learning from scratch] J'ai implémenté la couche Affine
Django memo n ° 1 à partir de zéro
Application de Deep Learning 2 à partir de zéro Filtre anti-spam
[Deep Learning from scratch] J'ai essayé d'expliquer le décrochage
[Deep Learning from scratch] Poids initial du réseau neuronal lors de l'utilisation de la fonction Relu
[Deep Learning from scratch] Implémentation de la méthode Momentum et de la méthode AdaGrad
Essayez de créer un réseau de neurones / d'apprentissage en profondeur avec scratch
Un amateur a trébuché dans le Deep Learning ❷ fait à partir de zéro Note: Chapitre 5
Un amateur a trébuché dans le Deep Learning ❷ fait à partir de zéro Note: Chapitre 2
Créez un environnement pour "Deep Learning from scratch" avec Docker
Un amateur a trébuché dans le Deep Learning à partir de zéro Note: Chapitre 3
Un amateur a trébuché dans le Deep Learning à partir de zéro Note: Chapitre 7
Un amateur a trébuché dans le Deep Learning à partir de zéro Note: Chapitre 5
Un amateur a trébuché dans le Deep Learning ❷ fait de zéro Note: Chapitre 1
Un amateur a trébuché dans le Deep Learning ❷ fait à partir de zéro Note: Chapitre 4