Deep Learning with Python Develop Deep Learning Models on Theano and TensorFLow Using Keras Jason Brownlee - Download the ebook now for full and detailed access
Deep Learning with Python Develop Deep Learning Models on Theano and TensorFLow Using Keras Jason Brownlee - Download the ebook now for full and detailed access
com
https://textbookfull.com/product/deep-learning-with-python-
develop-deep-learning-models-on-theano-and-tensorflow-using-
keras-jason-brownlee/
OR CLICK HERE
DOWLOAD EBOOK
https://textbookfull.com/product/beginning-anomaly-detection-using-
python-based-deep-learning-with-keras-and-pytorch-sridhar-alla/
textbookfull.com
Computer Vision Using Deep Learning Neural Network
Architectures with Python and Keras 1st Edition Vaibhav
Verdhan
https://textbookfull.com/product/computer-vision-using-deep-learning-
neural-network-architectures-with-python-and-keras-1st-edition-
vaibhav-verdhan/
textbookfull.com
https://textbookfull.com/product/deep-learning-for-time-series-
forecasting-predict-the-future-with-mlps-cnns-and-lstms-in-python-
jason-brownlee/
textbookfull.com
https://textbookfull.com/product/reinforcement-learning-with-open-ai-
tensorflow-and-keras-using-python-1st-edition-abhishek-nandy/
textbookfull.com
��������������������������������
����������������������������
�����
��������������
Jason Brownlee
Edition: v1.7
Contents
Preface iii
I Introduction 1
1 Welcome 2
1.1 Deep Learning The Wrong Way . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2 Deep Learning With Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3 Book Organization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.4 Requirements For This Book . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.5 Your Outcomes From Reading This Book . . . . . . . . . . . . . . . . . . . . . . 7
1.6 What This Book is Not . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.7 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
II Background 10
2 Introduction to Theano 11
2.1 What is Theano? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.2 How to Install Theano . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.3 Simple Theano Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.4 Extensions and Wrappers for Theano . . . . . . . . . . . . . . . . . . . . . . . . 13
2.5 More Theano Resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.6 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3 Introduction to TensorFlow 15
3.1 What is TensorFlow? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.2 How to Install TensorFlow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.3 Your First Examples in TensorFlow . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.4 Simple TensorFlow Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.5 More Deep Learning Models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.6 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
4 Introduction to Keras 19
4.1 What is Keras? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
4.2 How to Install Keras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
4.3 Theano and TensorFlow Backends for Keras . . . . . . . . . . . . . . . . . . . . 20
ii
iii
20.10Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
Deep learning is a fascinating field. Artificial neural networks have been around for a long time,
but something special has happened in recent years. The mixture of new faster hardware, new
techniques and highly optimized open source libraries allow very large networks to be created
with frightening ease.
This new wave of much larger and much deeper neural networks are also impressively skillful
on a range of problems. I have watched over recent years as they tackle and handily become
state-of-the-art across a range of difficult problem domains. Not least object recognition, speech
recognition, sentiment classification, translation and more.
When a technique comes a long that does so well on such a broad set of problems, you have
to pay attention. The problem is where do you start with deep learning? I created this book
because I thought that there was no gentle way for Python machine learning practitioners to
quickly get started developing deep learning models.
In developing the lessons in this book, I chose the best of breed Python deep learning library
called Keras that abstracted away all of the complexity, ruthlessly leaving you an API containing
only what you need to know to efficiently develop and evaluate neural network models.
This is the guide that I wish I had when I started apply deep learning to machine learning
problems. I hope that you find it useful on your own projects and have as much fun applying
deep learning as I did in creating this book for you.
Jason Brownlee
Melbourne, Australia
2016
viii
Part I
Introduction
1
Chapter 1
Welcome
Welcome to Deep Learning With Python. This book is your guide to deep learning in Python.
You will discover the Keras Python library for deep learning and how to use it to develop and
evaluate deep learning models. In this book you will discover the techniques, recipes and skills
in deep learning that you can then bring to your own machine learning projects.
Deep learning does have a lot of fascinating math under the covers, but you do not need
to know it to be able to pick it up as a tool and wield it on important projects and deliver
real value. From the applied perspective, deep learning is quite a shallow field and a motivated
developer can quickly pick it up and start making very real and impactful contributions. This is
my goal for you and this book is your ticket to that outcome.
You can see that the “common sense” advice means that it is not until after you have
completed years of study and experience that you are ready to actually start developing and
evaluating machine learning model for your machine learning projects.
I think this advice is dead wrong.
2
1.2. Deep Learning With Python 3
Lessons where you learn about specific features of neural network models and or how to
use specific aspects of the Keras API.
Projects where you will pull together multiple lessons into an end-to-end project and
deliver a result, providing a template your your own projects.
Recipes where you can copy and paste the standalone code into your own project,
including all of the code presented in this book.
Background.
Multilayer Perceptrons.
At the end of this part you will know how to confidently wield Keras on your own machine
learning projects with a focus of the finer points of investigating model performance, persisting
models for later use and gaining lifts in performance over baseline models.
The best way to learn about this impressive type of neural network model is to apply it.
You will work through three larger projects and apply CNN to image data for object recognition
and text data for sentiment classification.
After completing the lessons and projects in this part you will have the skills and the
confidence of complete and working templates and recipes to tackle your own deep learning
projects using convolutional neural networks.
1.4. Requirements For This Book 6
The best way to learn about this complex type of neural network model is to apply it.
You will work through two larger projects and apply RNN to sequence classification and text
generation.
After completing the lessons and projects in this part you will have the skills and the
confidence of complete and working templates and recipes to tackle your own deep learning
projects using recurrent neural networks.
1.3.7 Conclusions
The book concludes with some resources that you can use to learn more information about a
specific topic or find help if you need it as you start to develop and evaluate your own deep
learning models.
1.3.8 Recipes
Building up a catalog of code recipes is an important part of your deep learning journey. Each
time you learn about a new technique or new problem type, you should write up a short code
recipe that demonstrates it. This will give you a starting point to use on your next deep learning
or machine learning project.
As part of this book you will receive a catalog of deep learning recipes. This includes recipes
for all of the lessons presented in this book, as well as the complete code for all of the projects.
You are strongly encouraged to add to and build upon this catalog of recipes as you expand
your use and knowledge of deep learning in Python.
Python version 2 or 3 installed. This book was developed using Python version 2.7.11.
SciPy and NumPy installed. This book was developed with SciPy version 0.17.0 and
NumPy version 1.11.0.
Matplotlib installed. This book was developed with Matplotlib version 1.5.1.
Pandas installed. This book was developed with Pandas version 0.18.0.
You do not need to match the version exactly, but if you are having problems running a
specific code example, please ensure that you update to the same or higher version as the library
specified. You will be guided as to how to install the deep learning libraries Theano, TensorFlow
and Keras in Part II of the book.
How to use more advanced techniques required for developing state-of-the-art deep learning
models.
How to use advanced image augmentation techniques in order to lift model performance.
From here you can start to dive into the specifics of the functions, techniques and algorithms
used with the goal of learning how to use them better in order to deliver more accurate predictive
models, more reliably in less time. There are a few ways you can read this book. You can dip
into the lessons and projects as your need or interests motivate you. Alternatively, you can
work through the book end-to-end and take advantage of how the lessons and projects build in
complexity and range. I recommend the latter approach.
To get the very most from this book, I recommend taking each lesson and project and build
upon them. Attempt to improve the results, apply the method to a similar but di↵erent problem,
and so on. Write up what you tried or learned and share it on your blog, social media or send
me an email at [email protected]. This book is really what you make of it
and by putting in a little extra, you can quickly become a true force in applied deep learning.
This is not a deep learning textbook. We will not be getting into the basic theory
of artificial neural networks or deep learning algorithms. You are also expected to have
some familiarity with machine learning basics, or be able to pick them up yourself.
This is not an algorithm book. We will not be working through the details of how
specific deep learning algorithms work. You are expected to have some basic knowledge of
deep learning algorithms or how to pick up this knowledge yourself.
This is not a Python programming book. We will not be spending a lot of time on
Python syntax and programming (e.g. basic programming tasks in Python). You are
expected to already be familiar with Python or a developer who can pick up a new C-like
language relatively quickly.
You can still get a lot out of this book if you are weak in one or two of these areas, but you
may struggle picking up the language or require some more explanation of the techniques. If
this is the case, see the Getting More Help chapter at the end of the book and seek out a good
companion reference text.
1.7. Summary 9
1.7 Summary
It is a special time right now. The tools for applied deep learning have never been so good.
The pace of change with neural networks and deep learning feels like it has never been so fast,
spurred by the amazing results that the methods are showing in such a broad range of fields.
This is the start of your journey into deep learning and I am excited for you. Take your time,
have fun and I’m so excited to see where you can take this amazing new technology.
1.7.1 Next
Let’s dive in. Next up is Part II where you will take a whirlwind tour of the foundation libraries
for deep learning in Python, namely the numerical libraries Theano and TensorFlow and the
library you will be using throughout this book called Keras.
Part II
Background
10
Chapter 2
Introduction to Theano
Theano is a Python library for fast numerical computation that can be run on the CPU or GPU.
It is a key foundational library for deep learning in Python that you can use directly to create
deep learning models. After completing this lesson, you will know:
How a very simple symbolic expression can be defined, compiled and calculated.
11
2.2. How to Install Theano 12
Theano v0.8.2is the latest at the time of writing and is used in this book.
2.6 Summary
In this lesson you discovered the Theano Python library for efficient numerical computation.
You learned:
Theano is a foundation library used for deep learning research and development.
The development and evaluation of deep learning models is easier with wrapper libraries
like Keras.
2.6.1 Next
You now know about the Theano library for numerical computation in Python. In the next
lesson you will discover the TensorFlow library released by Google that attempts to o↵er the
same capabilities.
Chapter 3
Introduction to TensorFlow
TensorFlow is a Python library for fast numerical computing created and released by Google.
It is a foundation library that can be used to create deep learning models directly or by using
wrapper libraries that simplify the process built on top of TensorFlow. After completing this
lesson you will know:
15
3.3. Your First Examples in TensorFlow 16
environment, it is relatively straightforward to install TensorFlow using pip There are a number
of di↵erent distributions of TensorFlow, customized for di↵erent environments, therefore to
install TensorFlow you can follow the Download and Setup instructions3 on the TensorFlow
website. , for example:
TensorFlow v0.10.0is the latest at the time of writing and is used in this book.
Nodes: Nodes perform computation and have zero or more inputs and outputs. Data that
moves between nodes are known as tensors, which are multi-dimensional arrays of real
values.
Edges: The graph defines the flow of data, branching, looping and updates to state.
Special edges can be used to synchronize behavior within the graph, for example waiting
for computation on a number of inputs to complete.
Operation: An operation is a named abstract computation which can take input attributes
and produce output attributes. For example, you could define an add or multiply operation.
Running the example prints the output 4, which matches our expectation that 1.5 + 2.5 = 4.0.
This is a useful example as it gives you a flavor for how a symbolic expression can be defined,
compiled and used. Although we have only performed a basic introduction of adding 2 and 2,
you can see how pre-defining computation to be compiled for efficiency may be scaled up to
large vector and matrix operations required for deep learning.
Also check the examples directory as it contains an example using the MNIST dataset.
There is also an excellent list of tutorials on the main TensorFlow website4 . They show how
to use di↵erent network types, di↵erent datasets and how to use the framework in various
di↵erent ways. Finally, there is the TensorFlow playground5 where you can experiment with
small networks right in your web browser.
3.6 Summary
In this lesson you discovered the TensorFlow Python library for deep learning. You learned:
Like Theano, deep learning models can be developed directly in TensorFlow if desired.
Also like Theano, TensorFlow may be better leveraged by a wrapper library that abstracts
the complexity and lower level details.
4
https://www.tensorflow.org/versions/r0.9/tutorials/
5
http://playground.tensorflow.org/
3.6. Summary 18
3.6.1 Next
You now know about the Theano and TensorFlow libraries for efficient numerical computation
in Python. In the next lesson you will discover the Keras library that wraps both libraries and
gives you a clean and simple API for developing and evaluating deep learning models.
Chapter 4
Introduction to Keras
Two of the top numerical platforms in Python that provide the basis for deep learning research
and development are Theano and TensorFlow. Both are very powerful libraries, but both can
be difficult to use directly for creating deep learning models. In this lesson you will discover
the Keras Python library that provides a clean and convenient way to create a range of deep
learning models on top of Theano or TensorFlow. After completing this lesson you will know:
Modularity: A model can be understood as a sequence or a graph alone. All the concerns
of a deep learning model are discrete components that can be combined in arbitrary ways.
Minimalism: The library provides just enough to achieve an outcome, no frills and
maximizing readability.
Extensibility: New components are intentionally easy to add and use within the frame-
work, intended for developers to trial and explore new ideas.
Python: No separate model files with custom file formats. Everything is native Python.
19
Other documents randomly have
different content
Bibby Steamship Line, 151.
Black Ball Steamship Line, 27.
Black Diamond Steamship Line, 235.
Blue Flag Steamship Line, 129.
Bohemian, SS., 199;
wrecked, 202.
Boothby, Captain, 186.
Boulton & Watt, engineers, 334.
Brandon to Britain, 295.
Bristol City Steamship Line, 129.
Britannia, SS., 72, 74.
Britannic, SS., 118.
British and African Steamship Company, 155.
British and Colonial Steam Navigation Company, 156.
British Columbia, 334.
British India Steam Navigation Company, 148.
British and North American Royal Mail Steam-Packet
Company, 73.
British navy, 166, 175.
British Queen, SS., 97.
Brooks, Captain, 102.
Brown, Captain, 216.
Bruce Mines, S., 254.
Brunel, Isambard, 66.
Brush, George, 307, 310.
Buenos Ayrean, SS., 206.
Bulwer, Sir Edward, 159.
Burial of dead at sea, 183.
Burlington, S., 44.
Burns, Rev. Dr., 94.
Burns, Sir George, 71, 93.
Icebergs, 183.
Idaho, SS., lost, 225.
Imrie, William, 117.
Independence, propeller, 257.
India, SS., 149.
India and the East, 142.
Indian, SS., 142, 198, 200.
Indiana, SS., U.S., 342.
Inman Steamship Line, 107.
International Steamship Line, 107, 109.
Inverclyde, Lord, 94, 99.
Ireland, propeller, 263.
Iron steamers, 61, 314.
Iron ore transportation, 279.
Iroquois, S., 326.
Ismay, Thomas, H., 116, 122.
FOOTNOTES:
[1] “The Atlantic Ferry,” p. 175.
[2] If my recollection serves me aright, there were not more than
a dozen cabin passengers, and the only one of them who
ventured aloft with me was my now venerable friend, Mr. Robert
W. Graham, of the Montreal Star.
[3] “Denis Papin,” by Henry C. Ewart, in Sunday Magazine, 1880,
p. 316.
[4] Mr. Symington’s account of his interview with Mr. Fulton, as
given in the “Encyclopædia Britannica,” is as follows: “When
engaged in these experiments, I was called upon by Mr. Fulton,
who told me he was lately from North America, and intended
returning thither in a few months, but could not think of leaving
this country without first waiting upon me in expectation of
seeing the boat, and procuring such information regarding it as I
might be pleased to communicate.... In compliance with his
earnest request, I caused the engine fire to be lighted up, and in
a short time thereafter put the steamboat in motion, and carried
him four miles west on the canal, returning to the point from
which we started in one hour and twenty minutes (being at the
rate of six miles an hour), to the great astonishment of Mr. Fulton
and several gentlemen, who at our outset chanced to come on
board. During the trip Mr. Fulton asked if I had any objection to
his taking notes regarding the steamboat, to which I made no
objection, as I considered the more publicity that was given to
any discovery intended for the general good, so much the
better.... In consequence he pulled out a memorandum book,
and, after putting several pointed questions respecting the
general construction and effect of the machine, which I answered
in a most explicit manner, he jotted down particularly everything
then described, with his own observations upon the boat during
the trip.”
[5] “The Story of Helensburgh,” 1894, p. 92.
[6] These cuts, copied from Stanton’s “American Steam Vessels,”
represent first class Mississippi and Ohio light-draught, high-
pressure river steamers. The J. M. White, of 1878, was deemed
“a crowning effort in steamboat architecture in the West.” She
was 320 feet long and 91 feet in width, over the guards. Her
saloons were magnificently furnished, and all her internal fittings
of the most elaborate description. She carried 7,000 bales of
cotton and had accommodation for 350 cabinpassengers. Her
cost was $300,000. She was totally destroyed by fire in 1886.
[7] “Our Ocean Railways,” p. 69.
[8] Sufficient importance was attached to this matter to cause the
two Houses of Parliament, in Ottawa, to order a brass tablet,
commemorative of the event, to be placed in the corridor of the
Library of Parliament. The tablet, of which a facsimile is presented
in our frontispiece, was unveiled with fitting ceremony by His
Excellency the Governor-General, on the occasion of the opening
of the Colonial Conference, June 28th, 1894.—Vide: “The Journals
of the Colonial Conference” (Appendix); “Journal of the House of
Commons,” 1894; “Transactions of the Royal Society of Canada.”
[9] Others say 10½ days.
[10] Fry’s “History of Steam Navigation,” p. 182.
[11] Encyclopedia Britannica, 8th Ed., Vol. xx, p. 657.
[12] “Our Ocean Railways,” p. 75.
[13] For at least a hundred and fifty years the Post Office
Department had maintained a fleet of armed mail “packets.” They
had stations at Dover, Harwich, Holyhead, Milford, Yarmouth and
Falmouth, the last-named being the headquarters of the fleet.
During the time of the American war, 1812-15, no fewer than
thirty-two sanguinary battles were fought with American
privateers by the Falmouth packets, which, in a majority of
instances, successfully resisted their assailants.
[14] Sir John Burns in Good Words for 1887, p. 261.
[15] Fry’s “History,” p. 240.
[16] The invention is claimed for Canada in Chapter X., under the
heading of “New Brunswick.”
[17] The St. Paul, St. Louis, Paris and New York have all been
taken over by the United States Government and fitted up as
armed cruisers, the names of the last two being changed to
Harvard and Yale.
[18] Fry’s “History,” p. 193.
[19] The Germanic has since been overhauled and has now a set
of triple expansion engines, making her a seventeen-knot boat. In
July, 1895, she crossed from Queenstown to New York in 6 days,
23 hours, 45 minutes.
[20] Fry’s “History,” p. 180.
[21] A missionary of the Church of England, who ministered to a
few poor fishermen at Terence Bay, at the imminent risk of his life
put off to the wreck in a small boat and succeeded in saving the
life of the first officer of the ship after all hope of further rescue
had been abandoned, and when even the hardy fishermen
forbade the rash attempt. Mr. Ancient had formerly been attached
to the British navy, and during this heartrending scene acted the
part of a hero in his efforts to save life and to relieve the
sufferings of the survivors. Captain Williams was severely
censured, and had his certificate suspended for two years.
[22] This was written before the Hispano-American war began;
since then several of these vessels have been employed by the
United States Government with a change of nomenclature.
[23] “U. S. A. Report on Navigation for 1896,” p. 104.
[24] Last April the great Kaiser surpassed her previous record,
making the voyage from New York to Southampton (3,065 knots)
in 5 days, 17 hours, 8 minutes, showing an average speed of
22.35 knots per hour.
[25] The “Bourgogne” Disaster.—Since the sinking of the Eutopia in
Gibraltar Bay in 1891, no such marine disaster has occurred as
that which recently befell the SS. Bourgogne—a, tragedy in some
respects the most appalling that has ever been recorded. This
vessel of 7,795 tons—one of the finest of the French line of
steamers—sailed from New York for Havre on the 2nd of July,
1898, with a ship’s company, including passengers and crew, of
726 souls. Early on the morning of the 4th, when about sixty
miles south of Sable Island, during a dense fog, and while
running at the rate of some eighteen knots an hour, she came
into collision with the British sailing ship Cromartyshire, of 1,554
tons, and in a very short time foundered, carrying down with her
about 520 persons. Had it not been for her collision bulkhead the
Cromartyshire must have sunk, too. As it was, she was badly
damaged, but hove to all day in the hope of picking up survivors.
In the meantime the Allan SS. Grecian came up to the scene of
the disaster, the rescued passengers were taken on board, and
the disabled ship was towed into Halifax harbour. The survivors
were the purser of the steamship, three engineers, thirty of the
crew, and 170 passengers—204 in all. Of the seventy-two ladies
in the first cabin only one was saved. Captain Deloncle,
commander of the Bourgogne, was a lieutenant in the navy, and
a knight of the Legion of Honour, having under him a competent
staff of officers who appear to have done what they could to save
the lives of others. All of them went down with their ship into the
sailor’s grave. The loss of life was appalling, but even more
heartrending were the accounts given of the barbarous conduct
of some of the steerage passengers and sailors in the terrible
struggle for self-preservation.
[26] Fry’s “History,” p. 309.
[27] “Whitaker’s Almanack,” 1897, p. 543.
[28] “Our Ocean Railways,” p. 119.
[29] “Statistical Year-Book, 1896,” under Railways, p. 20.
[30] The Duke of Wellington was 240.6 feet long, 60 feet beam,
3,826 tons burthen, and 2,500 horse-power. She was engined by
Robert Napier & Sons, Glasgow, with geared engines and wooden
cogs, and made 10.2 knots an hour on her trial trip in 1853. The
Rattler, of 1851, was 179½ feet long, 32¾ feet beam, had
geared engines of 436 horse-power, and attained a speed of 10
knots.
[31] See also p. 90.
[32] Based on a compilation by Captain W. H. Smith.
[33] “Encyclopedia Brit.,” Vol. xvii., p. 581, 8th Ed.
[34] The Angloman was wrecked on the Skerries, in the Irish Sea,
in February, 1897. The crew were rescued, but the ship, with her
valuable cargo and a large number of cattle, became a total loss,
though fully covered by insurance.
[35] The SS. Memphis, of the African Steamship Company, but
employed by the Elder, Dempster Line, went ashore on the west
coast of Ireland in a fog in November, 1896, and became a total
wreck. Ten of the crew were drowned and 350 head of cattle.
[36] The Manchester ship canal is 35 miles long, 120 feet bottom
width, and 26 feet in depth. The docks at Manchester cover 104
acres and have five miles of quays. It was estimated to cost
£10,000,000 sterling, but cost over £15,000,000 before it was
completed. Arrangements are in progress by a Manchester
syndicate for the establishment of a weekly line of steamships of
8,500 tons capacity, to be provided with cold storage and the
most approved equipments for carrying live stock. The best
modern appliances for loading and discharging cargo, grain
elevators being included, are among the attractions which
enterprising Manchester presents to the shipping trade of
Canada.
[37] “Montreal Board of Trade Report, 1897,” pp. 52, 88.
[38]
DIMENSIONS OF THE GREAT LAKES.
Our website is not just a platform for buying books, but a bridge
connecting readers to the timeless values of culture and wisdom. With
an elegant, user-friendly interface and an intelligent search system,
we are committed to providing a quick and convenient shopping
experience. Additionally, our special promotions and home delivery
services ensure that you save time and fully enjoy the joy of reading.
textbookfull.com