Finally, all files in the GitHub repository have been updated to be able to run on Julia 1.1. In order to be able to run them (at the time of writing), the developmental versions of the Tensorflow.jl and PyCall.jl packages need to be installed. Some notable changes are listed below:
General
- The
shufflecommand has been moved to the Random package asRandom.shuffle(). linspacehas been replaced withrange(start, stop=..., length=...).- To determine the length of a matrix, use
size(...,2)instead oflength(). - For accessing the first and last part of datasets,
head()as been replaced withfirst(), andtail()withlast(). - For arithmetic calculations involving constants and arrays, the better syntax
const .- arrayneeds to be used instead ofconst - array. In connection with this, a space might be required before the operator; i.e. to avoid confusion with number types use1 .- array, and not1.-array. - Conversion of a dataframe
dfto a matrix can be done viaconvert(Matrix, df)instead ofconvert(Array, df).
Exercise 8
- The creation of an initially undefined vector etc. now requires the
undefkeyword as inactivation_functions = Vector{Function}(undef, size(hidden_units,1)). - An assignment of a function to multiple entries of a vector requires the dot-operator:
activation_functions[1:end-1] .= z->nn.dropout(nn.relu(z), keep_probability)
Exercise 10
- For this exercise to work, the MNIST.jl package needs an update. A quick fix can be found in the repository together with the exercise notebooks.
- Instead of
flipdim(A, d), usereverse(A, dims=d). indmaxhas been replaced byargmax.- Parsing expressions has been moved to the Meta package and can be done by
Meta.parse(...).
Exercise 11
- The behaviour of taking the transpose of a vector has been changed - it now creates an abstract linear algebra object. We use
collect()on the transpose for functions that cannot handle the new type. - To test if a string contains a certain word,
contains()has been replaced byoccursin().