2017-03-27 1 views
0

Je vais par exemple tensorflow de gouttelettes d'eau sur l'eau, le code:tensorflow animations en cours d'exécution de jupyter/ipython

#Import libraries for simulation 
import tensorflow as tf 
import numpy as np 

#Imports for visualization 
import PIL.Image 
from io import BytesIO 
from IPython.display import clear_output, Image, display 

#A function for displaying the state of the pond's surface as an image. 
def DisplayArray(a, fmt='jpeg', rng=[0,1]): 
    """Display an array as a picture.""" 
    a = (a - rng[0])/float(rng[1] - rng[0])*255 
    a = np.uint8(np.clip(a, 0, 255)) 
    f = BytesIO() 
    PIL.Image.fromarray(a).save(f, fmt) 
    clear_output(wait = True) 
    display(Image(data=f.getvalue())) 

sess = tf.InteractiveSession() 

def make_kernel(a): 
    """Transform a 2D array into a convolution kernel""" 
    a = np.asarray(a) 
    a = a.reshape(list(a.shape) + [1,1]) 
    return tf.constant(a, dtype=1) 

def simple_conv(x, k): 
    """A simplified 2D convolution operation""" 
    x = tf.expand_dims(tf.expand_dims(x, 0), -1) 
    y = tf.nn.depthwise_conv2d(x, k, [1, 1, 1, 1], padding='SAME') 
    return y[0, :, :, 0] 

def laplace(x): 
    """Compute the 2D laplacian of an array""" 
    laplace_k = make_kernel([[0.5, 1.0, 0.5], 
          [1.0, -6., 1.0], 
          [0.5, 1.0, 0.5]]) 
    return simple_conv(x, laplace_k) 

N = 500 

# Initial Conditions -- some rain drops hit a pond 

# Set everything to zero 
u_init = np.zeros([N, N], dtype=np.float32) 
ut_init = np.zeros([N, N], dtype=np.float32) 

# Some rain drops hit a pond at random points 
for n in range(40): 
    a,b = np.random.randint(0, N, 2) 
    u_init[a,b] = np.random.uniform() 

DisplayArray(u_init, rng=[-0.1, 0.1]) 

# Parameters: 
# eps -- time resolution 
# damping -- wave damping 
eps = tf.placeholder(tf.float32, shape=()) 
damping = tf.placeholder(tf.float32, shape=()) 

# Create variables for simulation state 
U = tf.Variable(u_init) 
Ut = tf.Variable(ut_init) 

# Discretized PDE update rules 
U_ = U + eps * Ut 
Ut_ = Ut + eps * (laplace(U) - damping * Ut) 

# Operation to update the state 
step = tf.group(
    U.assign(U_), 
    Ut.assign(Ut_)) 

# Initialize state to initial conditions 
tf.global_variables_initializer().run() 

# Run 1000 steps of PDE 
for i in range(1000): 
    # Step simulation 
    step.run({eps: 0.03, damping: 0.04}) 
    DisplayArray(U.eval(), rng=[-0.1, 0.1]) 

Puis, à partir ipython je import partial_d, mais il ne génère pas l'animation.

enter image description here

Quiconque a déjà utilisé tensorflow sait comment résoudre ce problème? Google mentionne Ipython Notebook, n'a pas pu trouver/mettre en place, mais j'ai jupyter et Ipython dernier installé.

Répondre

1

Avez-vous déjà utilisé jupyter? Je pense que vous devez démarrer votre serveur portable et exécuter le code de l'intérieur. Essayez d'exécuter jupyter notebook, puis d'importer votre code dans le bloc-notes. Alternativement, vous pouvez simplement copier et coller votre code dans une cellule de code et passer l'importation. Je ne connais pas l'exemple dont vous parlez, mais je ne pense pas que ce soit un problème de TF. Voyez comment vous le faites avec jupyter (le nouveau nom pour iPython pour dissiper toute confusion).

+0

Je suis familier avec python, juste installé jupyter et j'ai couru le code mais n'ai pas pu comprendre comment exécuter un script à partir de là. Voici deux instantanés de ce https://drive.google.com/file/d/0B0nxIjitvEABMkQzZDktcUNyV3c/view?usp=sharing https://drive.google.com/file/d/0B0nxIjitvEABUmppc3JyREg1ZDg/view?usp=sharing –

+0

Cliquez sur nouveau, nouveau cahier. Assurez-vous qu'il est correctement connecté à un noyau python (il devrait être), puis + une nouvelle cellule de code, copiez votre code et exécutez. Puis-je ** fortement ** vous suggérer de prendre quelques minutes pour regarder dans les ordinateurs portables jupyter. Ils sont super utiles quand il s'agit d'écrire python, en particulier avec des choses comme Tensorflow. Je l'utilise tout le temps pour mon développement TF. N'ouvrez pas le fichier .py car vous ne pouvez pas l'exécuter dans jupyter. Vous pouvez importer en utilisant la commande que vous avez mentionnée précédemment mais je la mettrais simplement dans une cellule dans un cahier frais. – JCooke

+0

maintenant que j'ai compris comment l'utiliser ouais il suffit de le copier dans la cellule puis le fonctionnement fonctionne, comment importer du code? –

0

This est arrivé à moi pour accélérer sur la façon d'utiliser jupyter et tensorflow pour générer l'animation des ondulations.