Resumé
De vigtigste emner, der er behandlet i dette kursus, er opsummeret nedenfor. Oversigtsmaterialet kan downloades nederst på denne side.
Tensorflow Opsætning
Installation
pip install tensorflow
Import
# Import the TensorFlow library with the alias tf
import tensorflow as tf
Tensortyper
Simpel tensoroprettelse
# Create a 1D tensor
tensor_1D = tf.constant([1, 2, 3])
# Create a 2D tensor
tensor_2D = tf.constant([[1, 2, 3], [4, 5, 6]])
# Create a 3D tensor
tensor_3D = tf.constant([[[1, 2], [3, 4]], [[5, 6],[7, 8]]])
Tensor-egenskaber
- Rank: angiver antallet af dimensioner i tensoren. For eksempel har en matrix en rank på 2. Rangen for en tensor kan findes med attributten
.ndim
:
print(f'Rank of a tensor: {tensor.ndim}')
- Shape: beskriver hvor mange værdier der findes i hver dimension. En 2x3 matrix har formen
(2, 3)
. Længden af shape-parameteren svarer til tensorens rank (dens antal dimensioner). Formen for en tensor kan findes med attributten.shape
:
print(f'Shape of a tensor: {tensor.shape}')
- Typer: Tensors findes i forskellige datatyper. Nogle almindelige er
float32
,int32
ogstring
. Datatypen for en tensor kan findes med attributten.dtype
:
print(f'Data type of a tensor: {tensor.dtype}')
Tensorakser
Anvendelser af tensorer
- Table Data
- Tekstsekvenser
- Numeriske sekvenser
- Billedbehandling
- Videobehandling
Batches
Tensor-oprettelsesmetoder
# Create a 2x2 constant tensor
tensor_const = tf.constant([[1, 2], [3, 4]])
# Create a variable tensor
tensor_var = tf.Variable([[1, 2], [3, 4]])
# Zero tensor of shape (3, 3)
tensor_zeros = tf.zeros((3, 3))
# Ones tensor of shape (2, 2)
tensor_ones = tf.ones((2, 2))
# Tensor of shape (2, 2) filled with 6
tensor_fill = tf.fill((2, 2), 6)
# Generate a sequence of numbers starting from 0, ending at 9
tensor_range = tf.range(10)
# Create 5 equally spaced values between 0 and 10
tensor_linspace = tf.linspace(0, 10, 5)
# Tensor of shape (2, 2) with random values normally distributed
tensor_random = tf.random.normal((2, 2), mean=4, stddev=0.5)
# Tensor of shape (2, 2) with random values uniformly distributed
tensor_random = tf.random.uniform((2, 2), minval=-2, maxval=2)
Konverteringer
- NumPy til Tensor
# Create a NumPy array based on a Python list
numpy_array = np.array([[1, 2], [3, 4]])
# Convert a NumPy array to a tensor
tensor_from_np = tf.convert_to_tensor(numpy_array)
- Pandas til Tensor
# Create a DataFrame based on dictionary
df = pd.DataFrame({'A': [1, 2], 'B': [3, 4]})
# Convert a DataFrame to a tensor
tensor_from_df = tf.convert_to_tensor(df.values)
- Konstant tensor til variabel tensor
# Create a variable from a tensor
tensor = tf.random.normal((2, 3))
variable_1 = tf.Variable(tensor)
# Create a variable based on other generator
variable_2 = tf.Variable(tf.zeros((2, 2)))
Datatyper
# Creating a tensor of type float16
tensor_float = tf.constant([1.2, 2.3, 3.4], dtype=tf.float16)
# Convert tensor_float from float32 to int32
tensor_int = tf.cast(tensor_float, dtype=tf.int32)
Aritmetik
- Addition
c1 = tf.add(a, b)
c2 = a + b
# Changes the object inplace without creating a new one
a.assign_add(b)
- Subtraktion
c1 = tf.subtract(a, b)
c2 = a - b
# Inplace substraction
a.assign_sub(b)
- Elementvis multiplikation
c1 = tf.multiply(a, b)
c2 = a * b
- Division
c1 = tf.divide(a, b)
c2 = a / b
Broadcasting
Lineær algebra
- Matrixmultiplikation
product1 = tf.matmul(matrix1, matrix2)
product2 = matrix1 @ matrix2
- Matrixinversion
inverse_mat = tf.linalg.inv(matrix)
- Transponering
transposed = tf.transpose(matrix)
- Prikprodukt
# Dot product along axes
dot_product_axes1 = tf.tensordot(matrix1, matrix2, axes=1)
dot_product_axes0 = tf.tensordot(matrix1, matrix2, axes=0)
Omformning
# Create a tensor with shape (3, 2)
tensor = tf.constant([[1, 2], [3, 4], [5, 6]])
# Reshape the tensor to shape (2, 3)
reshaped_tensor = tf.reshape(tensor, (2, 3))
Udskæring
# Create a tensor
tensor = tf.constant([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
# Slice tensor to extract sub-tensor from index (0, 1) of size (1, 2)
sliced_tensor = tf.slice(tensor, begin=(0, 1), size=(1, 2))
# Slice tensor to extract sub-tensor from index (1, 0) of size (2, 2)
sliced_tensor = tf.slice(tensor, (1, 0), (2, 2))
Ændring med slicing
# Create a tensor
tensor = tf.Variable([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
# Change the entire first row
tensor[0, :].assign([0, 0, 0])
# Modify the second and the third columns
tensor[:, 1:3].assign(tf.fill((3,2), 1))
Sammenkædning
# Create two tensors
tensor1 = tf.constant([[1, 2, 3], [4, 5, 6]])
tensor2 = tf.constant([[7, 8, 9]])
# Concatenate tensors vertically (along rows)
concatenated_tensor = tf.concat([tensor1, tensor2], axis=0)
# Concatenate tensors horizontally (along columns)
concatenated_tensor = tf.concat([tensor3, tensor4], axis=1)
Reduktionsoperationer
# Calculate sum of all elements
total_sum = tf.reduce_sum(tensor)
# Calculate mean of all elements
mean_val = tf.reduce_mean(tensor)
# Determine the maximum value
max_val = tf.reduce_max(tensor)
# Find the minimum value
min_val = tf.reduce_min(tensor)
Gradient Tape
# Define input variables
x = tf.Variable(tf.fill((2, 3), 3.0))
z = tf.Variable(5.0)
# Start recording the operations
with tf.GradientTape() as tape:
# Define the calculations
y = tf.reduce_sum(x * x + 2 * z)
# Extract the gradient for the specific inputs (x and z)
grad = tape.gradient(y, [x, z])
print(f"The gradient of y with respect to x is:\n{grad[0].numpy()}")
print(f"The gradient of y with respect to z is: {grad[1].numpy()}")
@tf.function
@tf.function
def compute_gradient_conditional(x):
with tf.GradientTape() as tape:
if tf.reduce_sum(x) > 0:
y = x * x
else:
y = x * x * x
return tape.gradient(y, x)
x = tf.constant([-2.0, 2.0])
grad = compute_gradient_conditional(x)
print(f"The gradient at x = {x.numpy()} is {grad.numpy()}")
Var alt klart?
Tak for dine kommentarer!
Sektion 2. Kapitel 5
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat
Awesome!
Completion rate improved to 5.56
Resumé
Stryg for at vise menuen
De vigtigste emner, der er behandlet i dette kursus, er opsummeret nedenfor. Oversigtsmaterialet kan downloades nederst på denne side.
Tensorflow Opsætning
Installation
pip install tensorflow
Import
# Import the TensorFlow library with the alias tf
import tensorflow as tf
Tensortyper
Simpel tensoroprettelse
# Create a 1D tensor
tensor_1D = tf.constant([1, 2, 3])
# Create a 2D tensor
tensor_2D = tf.constant([[1, 2, 3], [4, 5, 6]])
# Create a 3D tensor
tensor_3D = tf.constant([[[1, 2], [3, 4]], [[5, 6],[7, 8]]])
Tensor-egenskaber
- Rank: angiver antallet af dimensioner i tensoren. For eksempel har en matrix en rank på 2. Rangen for en tensor kan findes med attributten
.ndim
:
print(f'Rank of a tensor: {tensor.ndim}')
- Shape: beskriver hvor mange værdier der findes i hver dimension. En 2x3 matrix har formen
(2, 3)
. Længden af shape-parameteren svarer til tensorens rank (dens antal dimensioner). Formen for en tensor kan findes med attributten.shape
:
print(f'Shape of a tensor: {tensor.shape}')
- Typer: Tensors findes i forskellige datatyper. Nogle almindelige er
float32
,int32
ogstring
. Datatypen for en tensor kan findes med attributten.dtype
:
print(f'Data type of a tensor: {tensor.dtype}')
Tensorakser
Anvendelser af tensorer
- Table Data
- Tekstsekvenser
- Numeriske sekvenser
- Billedbehandling
- Videobehandling
Batches
Tensor-oprettelsesmetoder
# Create a 2x2 constant tensor
tensor_const = tf.constant([[1, 2], [3, 4]])
# Create a variable tensor
tensor_var = tf.Variable([[1, 2], [3, 4]])
# Zero tensor of shape (3, 3)
tensor_zeros = tf.zeros((3, 3))
# Ones tensor of shape (2, 2)
tensor_ones = tf.ones((2, 2))
# Tensor of shape (2, 2) filled with 6
tensor_fill = tf.fill((2, 2), 6)
# Generate a sequence of numbers starting from 0, ending at 9
tensor_range = tf.range(10)
# Create 5 equally spaced values between 0 and 10
tensor_linspace = tf.linspace(0, 10, 5)
# Tensor of shape (2, 2) with random values normally distributed
tensor_random = tf.random.normal((2, 2), mean=4, stddev=0.5)
# Tensor of shape (2, 2) with random values uniformly distributed
tensor_random = tf.random.uniform((2, 2), minval=-2, maxval=2)
Konverteringer
- NumPy til Tensor
# Create a NumPy array based on a Python list
numpy_array = np.array([[1, 2], [3, 4]])
# Convert a NumPy array to a tensor
tensor_from_np = tf.convert_to_tensor(numpy_array)
- Pandas til Tensor
# Create a DataFrame based on dictionary
df = pd.DataFrame({'A': [1, 2], 'B': [3, 4]})
# Convert a DataFrame to a tensor
tensor_from_df = tf.convert_to_tensor(df.values)
- Konstant tensor til variabel tensor
# Create a variable from a tensor
tensor = tf.random.normal((2, 3))
variable_1 = tf.Variable(tensor)
# Create a variable based on other generator
variable_2 = tf.Variable(tf.zeros((2, 2)))
Datatyper
# Creating a tensor of type float16
tensor_float = tf.constant([1.2, 2.3, 3.4], dtype=tf.float16)
# Convert tensor_float from float32 to int32
tensor_int = tf.cast(tensor_float, dtype=tf.int32)
Aritmetik
- Addition
c1 = tf.add(a, b)
c2 = a + b
# Changes the object inplace without creating a new one
a.assign_add(b)
- Subtraktion
c1 = tf.subtract(a, b)
c2 = a - b
# Inplace substraction
a.assign_sub(b)
- Elementvis multiplikation
c1 = tf.multiply(a, b)
c2 = a * b
- Division
c1 = tf.divide(a, b)
c2 = a / b
Broadcasting
Lineær algebra
- Matrixmultiplikation
product1 = tf.matmul(matrix1, matrix2)
product2 = matrix1 @ matrix2
- Matrixinversion
inverse_mat = tf.linalg.inv(matrix)
- Transponering
transposed = tf.transpose(matrix)
- Prikprodukt
# Dot product along axes
dot_product_axes1 = tf.tensordot(matrix1, matrix2, axes=1)
dot_product_axes0 = tf.tensordot(matrix1, matrix2, axes=0)
Omformning
# Create a tensor with shape (3, 2)
tensor = tf.constant([[1, 2], [3, 4], [5, 6]])
# Reshape the tensor to shape (2, 3)
reshaped_tensor = tf.reshape(tensor, (2, 3))
Udskæring
# Create a tensor
tensor = tf.constant([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
# Slice tensor to extract sub-tensor from index (0, 1) of size (1, 2)
sliced_tensor = tf.slice(tensor, begin=(0, 1), size=(1, 2))
# Slice tensor to extract sub-tensor from index (1, 0) of size (2, 2)
sliced_tensor = tf.slice(tensor, (1, 0), (2, 2))
Ændring med slicing
# Create a tensor
tensor = tf.Variable([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
# Change the entire first row
tensor[0, :].assign([0, 0, 0])
# Modify the second and the third columns
tensor[:, 1:3].assign(tf.fill((3,2), 1))
Sammenkædning
# Create two tensors
tensor1 = tf.constant([[1, 2, 3], [4, 5, 6]])
tensor2 = tf.constant([[7, 8, 9]])
# Concatenate tensors vertically (along rows)
concatenated_tensor = tf.concat([tensor1, tensor2], axis=0)
# Concatenate tensors horizontally (along columns)
concatenated_tensor = tf.concat([tensor3, tensor4], axis=1)
Reduktionsoperationer
# Calculate sum of all elements
total_sum = tf.reduce_sum(tensor)
# Calculate mean of all elements
mean_val = tf.reduce_mean(tensor)
# Determine the maximum value
max_val = tf.reduce_max(tensor)
# Find the minimum value
min_val = tf.reduce_min(tensor)
Gradient Tape
# Define input variables
x = tf.Variable(tf.fill((2, 3), 3.0))
z = tf.Variable(5.0)
# Start recording the operations
with tf.GradientTape() as tape:
# Define the calculations
y = tf.reduce_sum(x * x + 2 * z)
# Extract the gradient for the specific inputs (x and z)
grad = tape.gradient(y, [x, z])
print(f"The gradient of y with respect to x is:\n{grad[0].numpy()}")
print(f"The gradient of y with respect to z is: {grad[1].numpy()}")
@tf.function
@tf.function
def compute_gradient_conditional(x):
with tf.GradientTape() as tape:
if tf.reduce_sum(x) > 0:
y = x * x
else:
y = x * x * x
return tape.gradient(y, x)
x = tf.constant([-2.0, 2.0])
grad = compute_gradient_conditional(x)
print(f"The gradient at x = {x.numpy()} is {grad.numpy()}")
Var alt klart?
Tak for dine kommentarer!
Sektion 2. Kapitel 5