Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Compilation error #22

Closed
sumantkrsoni opened this issue Mar 29, 2020 · 2 comments
Closed

Compilation error #22

sumantkrsoni opened this issue Mar 29, 2020 · 2 comments
Assignees

Comments

@sumantkrsoni
Copy link

Hello,
I want to code according to the pydens and during compilation I am using an error at "dg solver line".
Kindly fix it ASAP so that I can move further to code my problem.

I am using tensorflow 1.15 version
======================code================

%tensorflow_version 1.x
import os
import sys

Stop TF from showing unnecessary deprecation warnings

import warnings
warnings.filterwarnings('ignore')
from tensorflow import logging
logging.set_verbosity(logging.ERROR)
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'

import numpy as np
import tensorflow as tf
from tqdm import tqdm_notebook
import matplotlib.pyplot as plt

sys.path.append('..') # this line is not needed if PyDEns is installed as package
from pydens import Solver, NumpySampler, cart_prod, add_tokens
from pydens import plot_loss, plot_pair_1d, plot_2d, plot_sections_2d, plot_sections_3d

add_tokens()

describing pde-problem in pde-dict

pde = {
'n_dims': 1,
'form': lambda u, t: D(u, t) - 2 * np.pi * cos(2 * np.pi * t),
'initial_condition': 1
}

put it together in model-config

config = {
'pde': pde,
'track': {'dt': lambda u, t: D(u, t)} # allows to later fetch this value from the model
}

uniform sampling scheme

s = NumpySampler('uniform')

train the network on batches of 100 points

dg = Solver(config)
dg.fit(batch_size=100, sampler=s, n_iters=2000, bar='notebook')

plot_loss(dg.loss, color='cornflowerblue')

plot real solution and network approximation

pts = np.linspace(0, 1, 200).reshape(-1, 1)
sol = lambda t: np.sin(2 * np.pi * t) + 1
true = [sol(t[0]) for t in pts]
approxs = dg.solve(pts)

plt.plot(pts, true, 'b--', linewidth=3, label='True solution')
plt.plot(pts, approxs, 'r', label='Network approximation')
plt.xlabel(r'$t$', fontdict={'fontsize': 14})
plt.legend()
plt.show()

plot approximation of solution-derivative

der = lambda t: 2 * np.pi * np.cos(2 * np.pi * t)
true_der = [der(t[0]) for t in pts]
ders = dg.solve(pts, fetches='dt')

plt.plot(pts, true_der, 'b--', linewidth=3, label=r'True derivative')
plt.plot(pts, ders, 'r', label=r'Network approximation of $\frac{d u}{d t}$')
plt.xlabel(r'$t$', fontdict={'fontsize': 14})
plt.legend()
plt.show()

plot_pair_1d(model=dg,
solution=lambda t: np.sin(2np.pit)+1,
confidence=0.15, alpha=0.2)

plot_pair_1d(model=dg,
solution=lambda t: 2 * np.pi * np.cos(2 * np.pi * t),
fetches='dt')


======================error is====================
OperatorNotAllowedInGraphError Traceback (most recent call last)
in ()
40
41 # train the network on batches of 100 points
---> 42 dg = Solver(config)
43 dg.fit(batch_size=100, sampler=s, n_iters=2000, bar='notebook')
44

15 frames
/tensorflow-1.15.2/python3.6/tensorflow_core/python/framework/ops.py in _disallow_in_graph_mode(self, task)
521 raise errors.OperatorNotAllowedInGraphError(
522 "{} is not allowed in Graph execution. Use Eager execution or decorate"
--> 523 " this function with @tf.function.".format(task))
524
525 def _disallow_bool_casting(self):

OperatorNotAllowedInGraphError: iterating over tf.Tensor is not allowed in Graph execution. Use Eager execution or decorate this function with @tf.function.

@malmajid
Copy link

Did you find a solution for this? I'm using TensorFlow version 1.15.

@sumantkrsoni
Copy link
Author

@malmajid
Not able to run this code.

Thanks

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants