[PYTHON] Comment lancer avec Theano

Acteurs Theano

theano est une bibliothèque typée très stricte.

Il n'y a pas d'inférence de type puissante comme python, vous voudrez bien sûr profiter de la distribution.

Je vais le lancer pour le moment

Le cast de theano est implémenté par theano.tensor.cast ().

Utilisons cast immédiatement. Par défaut, une matrice définie comme type float64 est convertie en type int32.

python


import theano.tensor as T
x = T.matrix()
x_as_int = T.cast(x, 'int32')

type(x), type(x_as_int)

Résultat de sortie


(theano.tensor.var.TensorVariable, theano.tensor.var.TensorVariable)

N'est-ce pas jeté?

Dans les résultats ci-dessus, les deux affichent le même type (TensorVariable).

En effet, la spécification de Theano définit les symboles comme des variables plutôt que comme des valeurs.

Utilisez theano.printing.debugprint () pour voir le type du contenu du symbole.

type de x


import theano
theano.printing.debugprint(x)

Résultat de sortie


<TensorType(float64, matrix)> [id A]

x_as_type int


theano.printing.debugprint(x_as_int)

Résultat de sortie


Elemwise{Cast{int32}} [id A] ''   
 |<TensorType(float64, matrix)> [id B]

Je vois, c'était à l'origine un type float64, mais il semble qu'il soit converti en int32 dans x_as_int.

Entrons réellement la valeur et vérifions le comportement.

Vérifier le type via la fonction

Pour mettre une valeur dans un symbole, vous devez définir une fonction.

En définissant une formule en utilisant des symboles comme fonction et en entrant une valeur dans cette fonction, le résultat du traitement de la formule est renvoyé comme valeur de retour de la fonction.

À ce stade, le type de la valeur d'entrée dépend du type du symbole.

Si vous entrez un type inapproprié, vous obtiendrez une erreur, donc

Si vous définissez le symbole de type int32 x_as_int comme entrée, vous devriez obtenir une erreur si vous entrez une fraction.

Définition des fonctions


import numpy as np

mat = np.array([[1.0, 0.0], [0.0, 1.0]], dtype="float64")
mat_int = np.array([[1, 0], [0, 1]], dtype="int32")

y = x * 2
f = theano.function(inputs=[x], outputs=y)

y_as_int = x_as_int * 2
f_as_int = theano.function(inputs=[x_as_int], outputs=y_as_int)

f(x)


f(mat)

Résultat d'exécution


array([[ 2.,  0.],
       [ 0.,  2.]])

f(x_as_int)


f(mat_int)

Résultat d'exécution


array([[ 2.,  0.],
       [ 0.,  2.]])

f_as_int(x)


f_as_int(mat)

Résultat d'exécution



---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-56-31692f0163e9> in <module>()
----> 1 f_as_int(mat)

/home/ubuntu/anaconda3/lib/python3.5/site-packages/theano/compile/function_module.py in __call__(self, *args, **kwargs)
    786                         s.storage[0] = s.type.filter(
    787                             arg, strict=s.strict,
--> 788                             allow_downcast=s.allow_downcast)
    789 
    790                     except Exception as e:

/home/ubuntu/anaconda3/lib/python3.5/site-packages/theano/tensor/type.py in filter(self, data, strict, allow_downcast)
    138                             '"function".'
    139                             % (self, data.dtype, self.dtype))
--> 140                         raise TypeError(err_msg, data)
    141                 elif (allow_downcast is None and
    142                         type(data) is float and

TypeError: ('Bad input argument to theano function with name "<ipython-input-54-50af382d0dd4>:2" at index 0 (0-based)', 'TensorType(int32, matrix) cannot store a value of dtype float64 without risking loss of precision. If you do not mind this loss, you can: 1) explicitly cast your data to int32, or 2) set "allow_input_downcast=True" when calling "function".', array([[ 1.,  0.],
       [ 0.,  1.]]))

f_as_int(x_as_int)


array([[2, 0],
       [0, 2]], dtype=int32)

Comme prévu, f_as_int (mat), qui spécifiait le type int32 comme symbole d'entrée et la valeur d'entrée comme type float64, a généré une erreur.

Vous pouvez maintenant voir le mouvement de la distribution dans le cinéma en toute sécurité.

Recommended Posts

Comment lancer avec Theano
Comment mettre à jour avec SQLAlchemy?
Comment modifier avec SQLAlchemy?
Comment séparer les chaînes avec ','
Comment faire RDP sur Fedora31
Comment supprimer avec SQLAlchemy?
Comment annuler RT avec Tweepy
Python: comment utiliser async avec
Comment utiliser les classes dans Theano
Pour utiliser virtualenv avec PowerShell
Comment démarrer avec Scrapy
Comment gérer l'erreur DistributionNotFound
Comment démarrer avec Django
Comment augmenter les données avec PyTorch
Comment calculer la date avec python
Comment installer mysql-connector avec pip3
Comment INNER JOIN avec SQL Alchemy
Comment installer Anaconda avec pyenv
Comment installer Theano sur Mac OS X avec homebrew
Comment effectuer un traitement arithmétique avec le modèle Django
[Blender] Comment définir shape_key avec un script
Comment titrer plusieurs figures avec matplotlib
Comment obtenir l'identifiant du parent avec sqlalchemy
Comment installer DLIB avec 2020 / CUDA activé
Comment utiliser ManyToManyField avec l'administrateur de Django
Comment utiliser OpenVPN avec Ubuntu 18.04.3 LTS
Comment utiliser Cmder avec PyCharm (Windows)
Comment empêcher les mises à jour de paquets avec apt
Comment utiliser BigQuery en Python
Comment utiliser Ass / Alembic avec HtoA
Comment gérer les erreurs de compatibilité d'énumération
Comment utiliser le japonais avec le tracé NLTK
Comment faire un test de sac avec python
Comment rechercher Google Drive dans Google Colaboratory
Comment afficher le japonais python avec lolipop
Comment télécharger des vidéos YouTube avec youtube-dl
Comment utiliser le notebook Jupyter avec ABCI
Comment mettre hors tension de Linux sur Ultra96-V2
Comment utiliser la commande CUT (avec exemple)
Comment entrer le japonais avec les malédictions Python
Comment installer zsh (avec la personnalisation .zshrc)
Comment lire les données de problème avec Paiza
Comment utiliser SQLAlchemy / Connect avec aiomysql
Comment regrouper des volumes avec LVM
Comment installer python3 avec docker centos
Comment utiliser le pilote JDBC avec Redash
Cast avec python
Comment télécharger avec Heroku, Flask, Python, Git (4)
Comment gérer les fuites de mémoire dans matplotlib.pyplot
Comment créer des exemples de données CSV avec hypothèse
Comment lire un fichier CSV avec Python 2/3
Comment utiliser la trace GCP avec la télémétrie ouverte
Comment réduire l'utilisation de la mémoire GPU avec Keras