---
# System prepended metadata

title: <center><i class="fa fa-edit"></i> TensorFlow with NN </center>
tags: [Internship]

---

# <center><i class="fa fa-edit"></i> TensorFlow with NN </center>
###### tags: `Internship`
:::info
**Goal:**
- [x] Simple TF Example
- [x] TF Placeholder

**Resources:**

- [Python TensorFlow Tutorial](https://adventuresinmachinelearning.com/python-tensorflow-tutorial/)
- [LSTM Implementation in Python/Numpy](https://gist.github.com/tmatha/f1c7082acdc9af21aade33b98687f2c6)
- [LSTM Implementation in TensorFlow eager execution](https://gist.github.com/tmatha/905ae0c0d304119851d7432e5b359330)

:::
### Simple Example

Import TensorFlow:
```import tensorflow as tf```

Create tf constant:
```const = tf.constant(2.0, name="const")```

Create tf variables:
```
b = tf.Variable(2.0, name='b')
c = tf.Variable(1.0, name='c')
```

Create tf operations:
```
d = tf.add(b, c, name='d')
e = tf.add(c, const, name='e')
a = tf.multiply(d, e, name='a')
```

Set up variable initialization:
```init_op = tf.global_variables_initializer()```

Start tf session:
- tf.Session is an object where all operations run
- Builds static graph
- `a` is an operation, not a variable, so it can run
```
with tf.Session() as sess:
    # initialise the variables
    sess.run(init_op)
    # compute the output of the graph
    a_out = sess.run(a)
    print("Variable a is {}".format(a_out))
```

:::success
**Conclusion**
- ```tf.constant(value, name="")```
- ```tf.Variable(value, name="")```
- ```tf.add(v1, v2, name="")```
- ```tf.multiply(v1, v2, name="")```
- ```tf.global_variables_initializer()```
- ```with tf.Session() as sess:```
- ```sess.run(operation)```

:::


### TF Placeholder

TF require a declaration of the basic data structure.

Create tf variables:
```b = tf.placeholder(tf.float32, [None, 1], name='b')```
- ```tf.float32```: data type of each element within tensor
- ```[None, 1]```: shape of data. Accepts None type if user does want to specify. Here, the array will be (? x 1)

From code above, change b so that:
```b = tf.placeholder(tf.float32, [None, 1], name='b')```

Change a_out:
```a_out = sess.run(a, feed_dict={b: np.arange(0, 10)[:, np.newaxis]})```
- ```feed_dict``` argument specifies what variable b is: a 1-D range from 0-10.