Issue 1:
System information

Have I written custom code (as opposed to using a stock example script provided in TensorFlow): yes, found here (https://github.com/viaboxxsystems/deeplearning-showcase/blob/tensorflow_2.0/flaskApp.py)

OS Platform and Distribution (e.g., Linux Ubuntu 16.04): MAC OSX 10.14.4

TensorFlow version (use command below): 2.0.0-alpha0

Python version: Python 3.6.5

You can collect some of this information using our environment capture

python -c "import tensorflow as tf; print(tf.version.GIT_VERSION, tf.version.VERSION)"

v1.12.0-9492-g2c319fb415 2.0.0-alpha0

Describe the current behavior

when running "flaskApp.py", After loading the model and trying to classify an image using "predict", it fails with the error:

tensorflow.python.framework.errors_impl.FailedPreconditionError: Error while reading resource variable softmax/kernel from Container: localhost. This could mean that the variable was uninitialized. Not found: Resource localhost/softmax/kernel/N10tensorflow3VarE does not exist.

Describe the expected behavior

a result of image classification should be returned.

Code to reproduce the issue

Steps to reproduce:

git clone https://github.com/viaboxxsystems/deeplearning-showcase.git

git checkout tensorflow_2.0

(if needed) pip3 install -r requirements.txt

export FLASK_APP=flaskApp.py

start the app with flask run

using Postman or curl send any image of a dog or cat to the app

OR

curl -X POST \
http://localhost:5000/net/MobileNet \
-H 'Postman-Token: ea35b79b-b34d-4be1-a80c-505c104050ec' \
-H 'cache-control: no-cache' \
-H 'content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' \
-F image=@/Users/haitham.b/Projects/ResearchProjects/CNNs/deeplearning-showcase/data/sample/valid/dogs/dog.1008.jpg

Other info / logs

E0430 13:36:10.374372 123145501933568 app.py:1761] Exception on /net/MobileNet [POST]
Traceback (most recent call last):
File "/Users/haitham.b/venv/tensorflow2.0alpha/lib/python3.6/site-packages/flask/app.py", line 2292, in wsgi_app
response = self.full_dispatch_request()
File "/Users/haitham.b/venv/tensorflow2.0alpha/lib/python3.6/site-packages/flask/app.py", line 1815, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/Users/haitham.b/venv/tensorflow2.0alpha/lib/python3.6/site-packages/flask/app.py", line 1718, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/Users/haitham.b/venv/tensorflow2.0alpha/lib/python3.6/site-packages/flask/_compat.py", line 35, in reraise
raise value
File "/Users/haitham.b/venv/tensorflow2.0alpha/lib/python3.6/site-packages/flask/app.py", line 1813, in full_dispatch_request
rv = self.dispatch_request()
File "/Users/haitham.b/venv/tensorflow2.0alpha/lib/python3.6/site-packages/flask/app.py", line 1799, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/Users/haitham.b/Projects/Virtualenvs/deeplearning-showcase/flaskApp.py", line 97, in use_net_to_classify_image
prediction, prob = predict(net_name, image)
File "/Users/haitham.b/Projects/Virtualenvs/deeplearning-showcase/flaskApp.py", line 59, in predict
output_probability = net_models[cnn_name].predict(post_processed_input_images)
File "/Users/haitham.b/venv/tensorflow2.0alpha/lib/python3.6/site-packages/tensorflow/python/keras/engine/training.py", line 1167, in predict
callbacks=callbacks)
File "/Users/haitham.b/venv/tensorflow2.0alpha/lib/python3.6/site-packages/tensorflow/python/keras/engine/training_arrays.py", line 352, in model_iteration
batch_outs = f(ins_batch)
File "/Users/haitham.b/venv/tensorflow2.0alpha/lib/python3.6/site-packages/tensorflow/python/keras/backend.py", line 3096, in __call__
run_metadata=self.run_metadata)
File "/Users/haitham.b/venv/tensorflow2.0alpha/lib/python3.6/site-packages/tensorflow/python/client/session.py", line 1440, in __call__
run_metadata_ptr)
File "/Users/haitham.b/venv/tensorflow2.0alpha/lib/python3.6/site-packages/tensorflow/python/framework/errors_impl.py", line 548, in __exit__
c_api.TF_GetCode(self.status.status))
tensorflow.python.framework.errors_impl.FailedPreconditionError: Error while reading resource variable softmax/kernel from Container: localhost. This could mean that the variable was uninitialized. Not found: Resource localhost/softmax/kernel/N10tensorflow3VarE does not exist.
[[{{node softmax/MatMul/ReadVariableOp}}]]

Issue 2:
Please make sure that this is a bug. As per our GitHub Policy, we only address code/doc bugs, performance issues, feature requests and build/installation issues on GitHub. tag:bug_template

System information

Have I written custom code (as opposed to using a stock example script provided in TensorFlow): yes

OS Platform and Distribution (e.g., Linux Ubuntu 16.04): Ubuntu 18.04

Mobile device (e.g. iPhone 8, Pixel 2, Samsung Galaxy) if the issue happens on mobile device:

TensorFlow installed from (source or binary): pip nightly

TensorFlow version (use command below): 2.0.0-dev20190415

Python version: 3.6

Bazel version (if compiling from source):

GCC/Compiler version (if compiling from source):

CUDA/cuDNN version:

GPU model and memory:

You can collect some of this information using our environment capture script

You can also obtain the TensorFlow version with

python -c "import tensorflow as tf; print(tf.GIT_VERSION, tf.VERSION)"

Describe the current behavior

The two following layers give different number of variable in model.variables. Keras duplicates shared variables in the variable list:

import tensorflow as tf
import numpy as np

class MLayer(tf.Module):
def __init__(self):
super(MLayer, self).__init__()
conv = tf.keras.layers.Conv2D(3, 3, 1, padding='SAME')
self.convs = [conv] * 7

def __call__(self, x):
for conv in self.convs:
x = conv(x)
return x

class KLayer(tf.keras.models.Model):
def __init__(self):
super(KLayer, self).__init__()
conv = tf.keras.layers.Conv2D(3, 3, 1, padding='SAME')
self.convs = [conv] * 7

def call(self, x):
for conv in self.convs:
x = conv(x)
return x

xnp = np.random.rand(1, 224, 224, 3)
x = tf.constant(xnp, tf.float32)

model = MLayer()
y = model(x)
v = [variable.name for variable in model.variables]
print(v, len(v))

model = KLayer()
y = model(x)
v = [variable.name for variable in model.variables]
print(v, len(v))

The first print:

['conv2d/kernel:0', 'conv2d/bias:0'] 2

The second prints:

['k_layer/conv2d_1/kernel:0', 'k_layer/conv2d_1/bias:0', 'k_layer/conv2d_1/kernel:0', 'k_layer/conv2d_1/bias:0', 'k_layer/conv2d_1/kernel:0', 'k_layer/conv2d_1/bias:0', 'k_layer/conv2d_1/kernel:0', 'k_layer/conv2d_1/bias:0', 'k_layer/conv2d_1/kernel:0', 'k_layer/conv2d_1/bias:0', 'k_layer/conv2d_1/kernel:0', 'k_layer/conv2d_1/bias:0', 'k_layer/conv2d_1/kernel:0', 'k_layer/conv2d_1/bias:0'] 14

Describe the expected behavior

I would expect two layers have the same number of variables.

Code to reproduce the issue

Provide a reproducible test case that is the bare minimum necessary to generate the problem.

Other info / logs

Include any logs or source code that would be helpful to diagnose the problem. If including tracebacks, please include the full traceback. Large logs and files should be attached.