Convolutional Neural Networks - Deep Learning basics with Python, TensorFlow and Keras p.3

Sdílet
Vložit
  • čas přidán 18. 08. 2018
  • Welcome to a tutorial where we'll be discussing Convolutional Neural Networks (Convnets and CNNs), using one to classify dogs and cats with the dataset we built in the previous tutorial.
    Text tutorials and sample code: pythonprogramming.net/convolu...
    Discord: / discord
    Support the content: pythonprogramming.net/support...
    Twitter: / sentdex
    Facebook: / pythonprogramming.net
    Twitch: / sentdex
    G+: plus.google.com/+sentdex

Komentáře • 913

  • @blendamosity
    @blendamosity Před 4 lety +5

    As a programmer/amateur data scientist, I have wanted to understand and use neural networks to take my craft to the next level for years, and sentdex, you are the first researcher/teacher/hacker/genius that has enabled me to actually break that glass ceiling and use neural networks for real-life problems. Thank you so much!

  • @Osirisdaro
    @Osirisdaro Před 5 lety +9

    "I need more tea" cracks me up.....
    Thanks for the vid

  • @ahmednayeem4849
    @ahmednayeem4849 Před 2 lety +51

    For anyone getting the following error "validation_split is only supported for Tensors or NumPy " add y = np.array(y) under X = np.array(X).reshape(-1, IMG_SIZE, IMG_SIZE,1)

  • @chrisdavidson4540
    @chrisdavidson4540 Před 4 lety

    You are the man, Sir! Thanks so much for making these vids...and looking forward to watching the machine learning lessons!

  • @prohacker5086
    @prohacker5086 Před 4 lety +127

    15:55 Found the solution: If you did everything exactly the same throughout the previous video, just add this " y = np.array(y) " after the " X = np.array(X).reshape(-1, IMG_SIZE, IMG_SIZE, 1)" so it look like this:
    X = np.array(X).reshape(-1, IMG_SIZE, IMG_SIZE, 1)
    y = np.array(y)
    It was giving me errors until adding that line too and reexecuting it

    • @Amit-cg9le
      @Amit-cg9le Před 4 lety +2

      Thanks for this solution, I was stuck.

    • @priyanshiburad2385
      @priyanshiburad2385 Před 4 lety

      after doing what you suggested I got this error
      File "", line 3, in raise_from
      tensorflow.python.framework.errors_impl.InvalidArgumentError: indices[194] = 194 is not in [0, 194) [Op:GatherV2]
      ps: 194 is the size of my dataset

    • @emredemircialumni8637
      @emredemircialumni8637 Před 4 lety

      Thanks

    • @denisardelean8067
      @denisardelean8067 Před 4 lety +2

      Thanks, It worked!
      I was getting some weird Tensorflow InvalidArgument errors and I was stuck..

    • @xXmineralwaterXx
      @xXmineralwaterXx Před 4 lety

      thanks a lot, that solved it for me too

  • @waynefilkins8394
    @waynefilkins8394 Před 5 lety +223

    you have some of the strangest coffee cups I have ever seen

  • @gautamj7450
    @gautamj7450 Před 5 lety +36

    A tutorial on keras callbacks such as EarlyStopping and ModelCheckpoint would be nice.
    Also, I would love if you could explain Image Augmentation in Keras for CNN.

  • @nikolaiivankin
    @nikolaiivankin Před 5 lety +11

    You can add layer with Activation inside:
    model.add(Dense(256, activation='relu'))
    It allows you to choose activation function to each of them separately

    • @TigerFitoff
      @TigerFitoff Před 3 měsíci

      dont know why he didn't do that

  • @camdenparsons5114
    @camdenparsons5114 Před 5 lety +117

    you should definitely do a video on transfer learning in this series.

  • @aaronshed
    @aaronshed Před 5 lety +50

    You can add the "layers" as an array "model = Sequential ([ flatten(), Dense(10), Activation('relu') ])" instead of using the model.add() function every time.

    • @curious_one1156
      @curious_one1156 Před 5 lety +8

      Why not use dense layer with 2 nodes in the end, why one ? please help in explaining

    • @sklify1232
      @sklify1232 Před 4 lety +1

      @@curious_one1156 Because one node can be both on and off ,1 and 0, cat and dog

    • @michaelschmidlin4274
      @michaelschmidlin4274 Před 4 lety

      @@sklify1232 So what if you put your output layer as "2". Then would you technically have 3 output classes? Ex. "Cat", "Dog", and "Airplane"?

    • @sklify1232
      @sklify1232 Před 4 lety

      @@michaelschmidlin4274 I think it would still be cat and dog, so it's an equivalent alternative to one node for binary choice. You could say "airplane" when both of the 2 nodes are off , but it would depend on the activation threshold- too cumbersome.

    • @dumbtex6107
      @dumbtex6107 Před 4 lety

      was gonna say the same thing lol

  • @joseenriqueorozcobecerra5969

    Thank you for being so didactical. I also relate some much when it comes to the errors :) Keep rocking!

  • @code-grammardude5974
    @code-grammardude5974 Před 5 lety +1

    Your tutorials are sooo good!

  • @stopwastingmytime9194
    @stopwastingmytime9194 Před 5 lety +3

    Was waiting for this for so long

  • @bharddwajvemulapalli
    @bharddwajvemulapalli Před 5 lety +11

    hey sentdex, nice tutorial I've been binge watching your tutorial videos and compared to your previous convolutional neural network videos I noticed a few differences. For conv2D you didn't increase the number of features(for both layers you kept it at 64) whereas previously you increased it. Why is that? Moreover, why did we not use dropout and why did we use the 'sigmoid' activation function over 'softmax'? And also wanted to say thank you for the great content!

  • @henkhbit5748
    @henkhbit5748 Před 3 lety

    I like your enthusiastic explanations and fun videos

  • @thefastreviewer
    @thefastreviewer Před rokem

    Just amazing! You are really helping me with my paper! 🙌

  • @mason6300
    @mason6300 Před 4 lety +10

    It was a headache but I finally installed tensorflow-gpu on my windows pc. now I can run the epoch in 20 seconds!

    • @rizwanrehman6833
      @rizwanrehman6833 Před 4 lety +1

      Can you tell me the steps to install tensorflow-gpu and my epoch is running very slowly @MRH

    • @aryanchauhan8066
      @aryanchauhan8066 Před 4 lety +1

      @@rizwanrehman6833 use google collab instead

    • @toonepali9814
      @toonepali9814 Před 4 lety

      I know the feeling

  • @tomasemilio
    @tomasemilio Před 5 lety +6

    Love the collection of mugs. I know you like to send hidden messages. Hahaha.

  • @davidfurley1775
    @davidfurley1775 Před 2 lety

    Dude literally saved my dissertation, what a legend 🙌

  • @manjunathshenoy3774
    @manjunathshenoy3774 Před 3 lety +1

    Bro Thank you so much for this tutorial. This helped me in doing my academic project. Thank you so much bro.

  • @ramzykaram296
    @ramzykaram296 Před 4 lety +7

    It can work on tf2 just by adjusting the below
    X = np.array(pickle.load(open("X.pickle", "rb")))
    y = np.array(pickle.load(open("y.pickle", "rb")))
    # now you have to reshape (col, rows, channel)
    X = np.reshape(X, (X.shape[0],*X.shape[1:],1))

  • @yashdwivedi2037
    @yashdwivedi2037 Před 5 lety

    Bro you are awesome.I have watched each one of your video series.Great content brother.

    • @usmanliaqat0321
      @usmanliaqat0321 Před 5 lety

      Hello Dear I am facing following error. I am using same syntax as you did....
      FileNotFoundError Traceback (most recent call last)
      in
      ----> 1 X = pickle.load(open("x.pickle","rb"))
      2 y = pickle.load(open("y.pickle","rb"))
      3 X = X/255.0

  • @liangyumin9405
    @liangyumin9405 Před 5 lety

    I can not wait to the next the next great tutorial !!! Very Nice Vedios

  • @brotherlui5956
    @brotherlui5956 Před 5 lety +46

    Hi Harrison, doesn´t the Dense(64) layer at 11:30 need an activation function? I added another "relu" there and got better accuracy.

    • @sentdex
      @sentdex  Před 5 lety +24

      Whoops. yep, that's a mistake lol.

    • @bharddwajvemulapalli
      @bharddwajvemulapalli Před 5 lety +1

      for some reason i got better accuracy in the same amount of epochs when i didn't add an activation function for that layer

    • @brotherlui5956
      @brotherlui5956 Před 5 lety

      King Neptune whatever that reason might be but a layer without an activation makes no sense

    • @bharddwajvemulapalli
      @bharddwajvemulapalli Před 5 lety

      Brother Lui yeah I agree it'd be useless

    • @davidedwards7172
      @davidedwards7172 Před 5 lety

      There has been some study of "all Conv" models where only the output layer is fully connected, generally results in greater accuracy.

  • @ArunKUMAR-wp4sb
    @ArunKUMAR-wp4sb Před 5 lety +3

    Will you do a tutorial on using RNN in Tensorflow and GANs and stuff.

  • @somechanne231
    @somechanne231 Před 5 lety

    Thanks man. thank you for your help and great teaching

  • @Jhaskydding
    @Jhaskydding Před 5 lety

    THANK YOU SO MUCH FOR THIS TUTORIAL

  • @gangholdon_
    @gangholdon_ Před 4 lety +4

    For anyone who had a negative loss by following this tutorial with your own dataset which had more than 2 categories of labels, don't forget to normalize your label array as well!! So y_normalized = y/ y_.max(). it will make your labels to be between 0-1 and then the whole thing works just fine

    • @ATDP1
      @ATDP1 Před rokem

      can you elaborate more where do you put that code?

  • @borispapic9510
    @borispapic9510 Před 5 lety +2

    Why are the first two layers conv2d and the third one is dense? I tried switching the second conv2d layer to dense and it had better accuracy but took a few seconds more to train. is it for balance between time and accuracy? Great videos and thank you for making these

  • @martinma1680
    @martinma1680 Před 4 lety

    Thanks for your CNN videos, sir.

  • @Lopezitation
    @Lopezitation Před 5 lety

    Bro, your coffee mugs are just the cherry on the cake

  • @sebastianmelmoth223
    @sebastianmelmoth223 Před 3 lety +3

    for anyone coming across this as of 03/03/2021, i had to do a bit of fiddling to get it running properly.
    X = []
    y = []
    for features, label in training_data:
    X.append(features)
    y.append(label)
    X = np.array(X).reshape(-1, IMG_SIZE, IMG_SIZE, 1)
    y = np.array(y)
    convert y to a numpy array after you've filled it with the targets/labels
    X.shape = (24946, 150, 150, 1)
    y.shape = (24946,)
    just need to get it running on the GPU now as it takes an age to run an epoch lol!

  • @Annunaki_0517
    @Annunaki_0517 Před 5 lety +6

    Hey,
    Could you maybe expand a bit on the exact purpose of the ‘Dropout’ function? We imported ‘Dropout’ but I don’t think we used it anywhere in the code. Did you decide on the fly to not include a dropout function or was it perhaps just simply an oversight?

    • @aadiduggal1860
      @aadiduggal1860 Před 2 lety

      usually you implement a dropout if your model has overtrained. So you randomly "drop out" certain connections in hopes to make your model more generalizable. Of course, it will probably also reduce accuracy for validation purposes.

  • @rm.throws
    @rm.throws Před 5 lety

    Harrison, the product placement master!

  • @AbhishekKumar-mq1tt
    @AbhishekKumar-mq1tt Před 5 lety

    Thank you for this awesome video

  • @RRKS_TF
    @RRKS_TF Před 4 lety +3

    how would i go about running this on the GPU instead of my CPU? it is taking ages to run a singular epoch

  • @aniketpatra6517
    @aniketpatra6517 Před 4 lety +11

    X=X/255.0 is giving me error unsupported operand type(s) for /: 'NoneType' and 'float'. How will I rectify the error ?

    • @markd5928
      @markd5928 Před 4 lety +8

      In tutorial #2 Harrison converted X to a numpy array, and it's possible that definition is still hanging around here. Before the division, add the following lines and you should be good to go:
      import numpy as np
      X = np.array(X)

    • @Twas_Grace
      @Twas_Grace Před 11 měsíci

      @@markd5928 I know it's been three years for you lol, but THANK YOU for this. I was pulling my hair trying to figure this error out.

  • @dodgeridersrt5650
    @dodgeridersrt5650 Před 5 lety

    THANK YOUUUUUU !!!! It is really helpful 😘🖤

  • @nitinmeena2773
    @nitinmeena2773 Před 5 lety

    Series on data preprocessing and feature engineering will be really helpful.

  • @sanjanakonda5632
    @sanjanakonda5632 Před 4 lety +5

    I am getting an error at validation split ValueError: `validation_split` is only supported for Tensors or NumPy arrays, found: (array([[[[ 36],

    • @marcus.bazzoni
      @marcus.bazzoni Před 4 lety +8

      import numpy again and reconvert to nparrays after loading
      X = np.array(X)
      y = np.array(y)

  • @wiemcharrada5866
    @wiemcharrada5866 Před 5 lety +7

    How can I test this model for a new image ?!

    • @goldenbananas1389
      @goldenbananas1389 Před 3 lety +1

      I dont know if you still need this but what I did was:
      Image_size = (your image size)
      CatDogModel = tf.keras.models.load_model('(put the name of your model save file here)')
      ImagePath = "(Path to your image)"
      Image = cv2.imread(ImagePath, cv2.IMREAD_GRAYSCALE)
      NewImage = cv2.resize(Image, (Image_size, Image_size))
      NewImage = np.array(NewImage).reshape(-1, Image_size, Image_size, 1)
      prediction = CatDogModel.predict([NewImage])
      a = prediction[0]
      print(a)
      0 is dog and 1 is cat.
      (I did all of this in a separate python script.)
      I dont know if I did it in the best way but that's what I did.

  • @rickeycarter
    @rickeycarter Před 5 lety

    re:layer, I think the origin is from the data graph that is formed. It's another layer/processing step that gets applied, and the order of the operations is somewhat tunable (e.g., activate before normalization or vice versa).

  • @EnEm523
    @EnEm523 Před rokem

    You are a amazing teacher ❤️

  • @gokulsundeep3610
    @gokulsundeep3610 Před 5 lety +4

    I'm getting this error:
    ValueError: Negative dimension size caused by subtracting 3 from 1 for 'conv2d/Conv2D' (op: 'Conv2D') with input shapes: [?,50,50,1], [3,3,50,256].
    Can anyone help!!

    • @robertslash3488
      @robertslash3488 Před 4 lety

      yes, the solution lies within the 2nd video, a slight edit should be made in 2nd video in order for the 3rd video code to run.
      In the section wher the x has been made into an array, y should also be made into an array. The line goes something like this : X = np.array(X).reshape(-1, IMG_SIZE, IMG_SIZE, 1)
      y=np.array(y)
      This would solve the value error problem, as they both are fitted into two individual arrays.

  • @siawkexing5663
    @siawkexing5663 Před 5 lety +5

    Seems u need someone to draw for this project😂😂
    Anyway nice tutorial

  • @kevingeorgedalpathadu5408

    Thank You, Good explanation 👍🔥

  • @marcellaufmann3901
    @marcellaufmann3901 Před 4 lety

    Great video. Thank you very much.

  • @zperk13
    @zperk13 Před 5 lety +17

    16:00 how did you computer do that so fast?! i have a really good computer and it took 69 seconds
    edit: I installed tensorflow-gpu and now it takes 4 seconds oh yeah

  • @shubhamkumargupta3478
    @shubhamkumargupta3478 Před 5 lety +12

    getting error
    ValueError: Input arrays should have the same number of samples as target arrays. Found 74838 input samples and 24946 target samples.

    • @adriandrotar
      @adriandrotar Před 3 lety

      same problem, any fix?

    • @hazemahmed1982
      @hazemahmed1982 Před 3 lety

      That means that your reshaping didn't go well, you could try to check the image size you constructed the data with and run it again

  • @alokrajgupta9452
    @alokrajgupta9452 Před 5 lety

    Hi Harrison, At 12:26, in my opinion activation function is present at every layer that is why keras added it to the keras.layers !

  • @abhishekmaheshwari
    @abhishekmaheshwari Před 2 lety

    Thank you so much for the video..

  • @ashvnikumar4292
    @ashvnikumar4292 Před 5 lety +7

    i am using for different dataset but i am caught at this error. Help me.
    My dataset has total 4000 images in 4 classes, 1000 images in each class.
    ValueError: Input arrays should have the same number of samples as target arrays. Found 40 input samples and 4000 target samples.

  • @luantaminh8103
    @luantaminh8103 Před 5 lety +3

    My computer is too slow. Thanks for your tutorial

    • @atithi8
      @atithi8 Před 5 lety

      USE gpu of ur computer, perhaps u have figured that out already

  • @sanjaychakrabortyaworldofc6953

    Nice hands on explanation of CNN

  • @jeremynx
    @jeremynx Před 3 lety

    thank you for such good videos!!!

  • @-._
    @-._ Před 5 lety +35

    How many tea cups do you have???

  • @doggo206
    @doggo206 Před 5 lety +4

    9:05 Genuine question, what does the colon do?

    • @hamish8688
      @hamish8688 Před 5 lety

      X.shape[ 1 ] returns an int e.g. 7
      X.shape[ 1 : ] returns a tuple e.g. (7, )
      so the colon would return a tuple instead of an integer, not sure if that helps?

    • @doggo206
      @doggo206 Před 5 lety +1

      Hamish Okay, thanks!

    • @matheusataide1861
      @matheusataide1861 Před 5 lety +1

      Actually its for slicing. X.shape[1:] means he is getting the tuple X.shape, but without the first element.
      Example: X.shape returns (a, b, c, d) X.shape[1:] returns (b, c, d)

  • @moabs438
    @moabs438 Před 5 lety

    Awesome video ! keep going ...

  • @manojkumar-qp8xu
    @manojkumar-qp8xu Před 5 lety

    Very good content bro........ It's really helpful

  • @harshavarthanvijayakumar8993

    I am getting this error
    ValueError: Failed to find data adapter that can handle input: , ( containing values of types {""})

    • @vaizerdgrey
      @vaizerdgrey Před 4 lety +2

      The problem is that X is a numpy array and y is just a list.
      What I did is:
      X = np.array(X).reshape(-1, IMG_SIZE, IMG_SIZE, 1)
      y = np.array(y)

    • @sourabhjigjinni
      @sourabhjigjinni Před 4 lety +1

      @@vaizerdgrey thanks this worked!

    • @harshavarthanvijayakumar8993
      @harshavarthanvijayakumar8993 Před 4 lety +1

      @@@vaizerdgrey it worked thanks buddy

  • @kyle_bro
    @kyle_bro Před 5 lety +4

    Coffee mug level: 100

  • @vinodkinoni4863
    @vinodkinoni4863 Před 5 lety

    great tutorials thanks

  • @harijsijabs2420
    @harijsijabs2420 Před 5 lety +1

    Hey! Very useful and comprehensive series so far! You got my sub!
    Question - how would you go about implementing multispectral imagery (i.e. - more than 3 bands) ?

  • @piyushkonher8405
    @piyushkonher8405 Před 4 lety +4

    Failed to find data adapter that can handle input: , ( containing values of types {""})
    getting this error , how to resolve ??

    • @rubenuribe
      @rubenuribe Před 4 lety +1

      I am getting the same error.

    • @rubenuribe
      @rubenuribe Před 4 lety +11

      Solved the problem:
      The problem is that X is a numpy array and y is just a list.
      put
      from numpy import array
      in the import statements
      and change the y assignment to
      y = array(pickle.load(open("Y.pickle","rb")))

    • @eloycollado1939
      @eloycollado1939 Před 4 lety +1

      @@rubenuribe love u

    • @AlcoverMANZoo
      @AlcoverMANZoo Před 4 lety +1

      @@rubenuribe gracies maquina

    • @NickxHaruka
      @NickxHaruka Před 4 lety +1

      @@rubenuribe Freaking love you man !

  • @bytblaster
    @bytblaster Před 4 lety +3

    I am getting a "ValueError: Input 0 is incompatible with layer conv2d_1: expected ndim=4, found ndim=3" can someone help?

    • @x3epic763
      @x3epic763 Před 4 lety

      try creating a new variable that stores a resized X with an additional dummy dimension, something like "resizedX = numpy.resize(X, (1,X.shape))" and put that resized X into your fit function instead of the normal X

    • @jordenquast2655
      @jordenquast2655 Před 4 lety

      @@x3epic763 What Do you mean? Could you explain more? I'm getting the same error, but I don't know what you're saying

    • @x3epic763
      @x3epic763 Před 4 lety

      @@jordenquast2655 well the error kinda says that the function expected a 4 dimensional input but received a 3 dimensional one. Therefore you can try adding a 4th "dummy" dimension as the first dimension to the input. So say your input has the shape (200,5,5) then the new input should be (1,200,5,5).This can be done with the resize function: you make a new variable and store the result of the function as the input. This new variable can then be used as input for the training function. It depends on the overall setup if this will work, but ive seen the problem solved like this a couple of times

    • @jordenquast2655
      @jordenquast2655 Před 4 lety

      @@x3epic763 I solved it, there error was in the last line of the data transformation code, where it took some dimensions away. This left it with too few dimensions to be able to run. I believe the line of code was X = np.array(X).reshape(-1, imgSize). Hope this helps someone!

    • @marksahlgreen9584
      @marksahlgreen9584 Před 4 lety

      @@jordenquast2655 specifically this is the correct line: X = np.array(X).reshape(-1, IMG_SIZE, IMG_SIZE, 1)

  • @Jedop
    @Jedop Před 4 lety

    A target array with shape (2400, 64, 64, 1) was passed for an output of shape (None, 1) while using as loss `binary_crossentropy`. This loss expects targets to have the same shape as the output.

  • @Diego01201
    @Diego01201 Před 3 lety

    I changed the output layer to be 2 neurons with softmax activation and sparse categorical crossentropy. Makes more sense to me, since we want to know the probabilities of the input image being either a cat or a dog.

  • @severussnape5978
    @severussnape5978 Před 5 lety +6

    my god man, why your computer so fast.
    mine takes forever to train

    • @supernova6553
      @supernova6553 Před 5 lety

      it's most likely a server

    • @waynefilkins8394
      @waynefilkins8394 Před 5 lety

      he has a high-end gpu. if you're on a budget I picked up a 1060 6gb on ebay for like $130 and it trains models really fast for the $$

    • @supernova6553
      @supernova6553 Před 5 lety

      @@waynefilkins8394 yes but i think he uses paperspace and does his development on their servers.

  • @ederjuniorchua827
    @ederjuniorchua827 Před 4 lety +4

    is it just me, or does he look a bit like Edward Snowden?

  • @Shrarder0000
    @Shrarder0000 Před 4 lety +1

    You can estimate the largest batch size using:
    Max batch size= available GPU memory bytes / 4 / (size of tensors + trainable parameters)

  • @ygarabawala
    @ygarabawala Před 5 lety

    Awesome as always, will wait patiently for the next video and I hope to hit "Join" button too when i am less busy to get the max out of your brain :D

  • @flosset9640
    @flosset9640 Před 4 lety +3

    yo i got the entire project on github check it out

  • @nomesa7374
    @nomesa7374 Před 5 lety

    Thanks for the tutorial. One question though:
    What further steps we should take in order to construct a model which returns the bounding box (position information)?
    Do we need to do labeling (with for example labelImg)? Tfrecord? ...

  • @samkitkundalia3099
    @samkitkundalia3099 Před 5 lety

    If you want to see a flowchart of your model, use:
    from keras.utils import plot_model
    plot_model( model, 'Chart.png' )

  • @sicmike2g
    @sicmike2g Před 2 lety

    Love that mug 🙂

  • @guillermobastianfernandez1679

    Nice video dude

  • @thevikinglord9209
    @thevikinglord9209 Před 2 lety

    That is it, you are better than my professor!

  • @ryanstern7927
    @ryanstern7927 Před 4 lety +2

    How do you decide how many hidden layers you are going to use and how many nodes per layer you will use?

  • @exansis
    @exansis Před 4 lety

    i have an assignment due in 2 days, now im here :P

  • @aditya8404
    @aditya8404 Před 5 lety

    You can either pass Activation as a layer or as an argument for a layer.
    "Activations can either be used through an Activation layer, or through the activation argument supported by all forward layers:"
    keras.io/activations/

  • @arkasaha4412
    @arkasaha4412 Před 5 lety

    Nice video. Will you consider making a series on Signal processing with Python?

  • @TheGeektarrist
    @TheGeektarrist Před 4 lety +1

    Hi,
    First of all, thanks for this tutorial, it covered most of my doubts! But I have a question, will it work for multiclass classification? I mean I am trying to apply the same exact algorithm to a lego dataset (6 classes), but I am getting pretty bad results accuracy is about 0.17. Any advice?

  • @loukask.9111
    @loukask.9111 Před 5 lety

    9:48 5 sentences... i love it! :D

  • @subratode7086
    @subratode7086 Před 5 lety

    wonderful content
    this man should hv more than 10 million subscribers

  • @benjii0stylz
    @benjii0stylz Před 5 lety

    Bobby Fisher's 21 move brilliancy is a video I watched at least 10 times. Apparently we are in the same team, since CZcams's ML algorithms tell you to watch it ^^

  • @GAment_11
    @GAment_11 Před 3 lety

    This is such a great intro to the subject. I am interested in creating my own data for which I would train a network instead of downloading something rom the internet----aka, recording a video of something for which I can extract alot of image frame from (at least 30 frames per second) and use these images as training/test data. I plan to reshape images and the like before feeding to a CNN--but do you have any pointers on pitfalls I might face when creating my own data sets (other than the fact I would need a lot of training data)? Thanks again for these tutorials, you make this subject incredibly fun.

  • @nacerzarguit8970
    @nacerzarguit8970 Před 5 lety

    Great tutorial !
    I think it's better that you use Jupyter notebook in your tutorials. It makes things much easier to follow.

  • @raghavsaxena96
    @raghavsaxena96 Před 4 lety

    I think best way to define a layer is to define all the parameters like activation='relu' ,optimizer='adam' in a single line like model.add(Dense(34,activation='relu',optimizer='Adam'))

  • @erikasimon6923
    @erikasimon6923 Před 5 lety +1

    thanks for the great video where i can find the dataset?

  • @roussafiomar5741
    @roussafiomar5741 Před 3 lety

    thanks dude

  • @wanqingan795
    @wanqingan795 Před 2 lety

    Help me a lot! By the way, your cup is soooooooo cute!

  • @shahidmehmood3542
    @shahidmehmood3542 Před 4 lety

    valuable content

  • @AdarshMahabubnagar
    @AdarshMahabubnagar Před 3 lety

    Thank you for your video. I have followed the same way of designing the CNN model but unfortunately the model gets overfitted. How can I overcome overfitting on this similar kind of CNN models.

  • @mehdisoleymani6012
    @mehdisoleymani6012 Před 2 lety

    Thanks a lot for your great courses, is it possible for you to explain my question? How should we add non-image features to our CNN model (features like cat and dog prices) to our flatten layer? Does the CNN model new added features belong to which input image?

  • @max31505
    @max31505 Před 5 lety

    python are just so amazing! i mean its just so friendly to use,u can just grab some tool and go ahead,play with it,and its fun!

  • @GameTuberer
    @GameTuberer Před 4 lety

    Great video, I have a database with 2 folders: ships and other (waves, bridges, coasts, and similar). How should I modify this to recognize what is a ship and what is not, instead of classifying because the folder 'Other' has many different images?

  • @user-oe6xr3oj7p
    @user-oe6xr3oj7p Před 5 lety +1

    when compiling with pycharm, "OpenCV(3.4.1) Error: Assertion failed (ssize.width > 0 && ssize.height > 0) in resize" errors happen by 60 or much more times, do you know what is the error.

  • @timtensor6994
    @timtensor6994 Před 5 lety

    Also , a tutorial on pose estimation applications!

  • @byol2byol2
    @byol2byol2 Před 5 lety

    thank you!

  • @sharimpervez8746
    @sharimpervez8746 Před 5 lety

    Awesome!!!!