neche

Untitled

Jul 1st, 2020
157
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.81 KB | None | 0 0
  1. import tensorflow as tf
  2. from tensorflow.keras.optimizers import RMSprop
  3. from tensorflow import keras
  4. from tensorflow.keras import layers
  5. from tensorflow.keras.preprocessing.image import ImageDataGenerator
  6.  
  7. !wget --no-check-certificate \\
  8. https://dicodingacademy.blob.core.windows.net/picodiploma/ml_pemula_academy/rockpaperscissors.zip \\
  9. -O /tmp/rockpaperscissors.zip
  10.  
  11. import zipfile,os
  12. local_zip = '/tmp/rockpaperscissors.zip'
  13. zip_ref = zipfile.ZipFile(local_zip, 'r')
  14. zip_ref.extractall('/tmp')
  15. zip_ref.close()
  16.  
  17. !pip install split-folders
  18. import split_folders
  19. split_folders.ratio('/tmp/rockpaperscissors/rps-cv-images', output="/tmp/rockpaperscissors/hasil_split", seed=1337, ratio=(.8, .2))
  20.  
  21. base_dir = '/tmp/rockpaperscissors/hasil_split'
  22. train_dir = os.path.join(base_dir, 'train')
  23. validation_dir = os.path.join(base_dir, 'val')
  24.  
  25. # Train
  26. train_paper_dir = os.path.join(train_dir, 'paper')
  27. train_scissors_dir = os.path.join(train_dir, 'scissors')
  28. train_rock_dir = os.path.join(train_dir, 'rock')
  29. # Validation
  30. validation_paper_dir = os.path.join(validation_dir, 'paper')
  31. validation_scissors_dir = os.path.join(validation_dir, 'scissors')
  32. validation_rock_dir = os.path.join(validation_dir, 'rock')
  33.  
  34. train_datagen = ImageDataGenerator(
  35. rescale=1/255,
  36. rotation_range=20,
  37. horizontal_flip=True,
  38. shear_range = 0.2,
  39. fill_mode = 'nearest')
  40. test_datagen = ImageDataGenerator(
  41. rescale=1/255,
  42. rotation_range=20,
  43. horizontal_flip=True,
  44. shear_range = 0.2,
  45. fill_mode = 'nearest')
  46.  
  47. train_generator = train_datagen.flow_from_directory(
  48. train_dir,
  49. target_size=(150, 150),
  50. batch_size=4,
  51. class_mode='categorical')
  52. validation_generator = test_datagen.flow_from_directory(
  53. validation_dir,
  54. target_size=(150, 150),
  55. batch_size=4,
  56. class_mode='categorical')
  57.  
  58. Hasil => Found 1749 images belonging to 3 classes.
  59. Found 439 images belonging to 3 classes.
  60.  
  61. model = tf.keras.models.Sequential([
  62. tf.keras.layers.Conv2D(32, (3,3), padding='same', activation='relu',
  63. input_shape=(150, 150, 3)),
  64. tf.keras.layers.MaxPooling2D(),
  65. tf.keras.layers.Dropout(0.2),
  66. tf.keras.layers.Conv2D(32, 3, padding='same', activation='relu'),
  67. tf.keras.layers.MaxPooling2D(),
  68. tf.keras.layers.Conv2D(64, 3, padding='same', activation='relu'),
  69. tf.keras.layers.MaxPooling2D(),
  70. tf.keras.layers.Dropout(0.2),
  71. tf.keras.layers.Flatten(),
  72. tf.keras.layers.Dense(512, activation='relu'),
  73. tf.keras.layers.Dense(3, activation='softmax')
  74.  
  75. ])
  76.  
  77. model.compile(loss='categorical_crossentropy',
  78. optimizer=tf.optimizers.Adam(),
  79. metrics=['accuracy'])
  80. model.summary()
  81.  
  82. model.fit(
  83. train_generator,
  84. steps_per_epoch=35,
  85. epochs=10,
  86. validation_data=validation_generator,
  87. validation_steps=5,
  88. verbose=2)
  89.  
  90. import numpy as np
  91. from google.colab import files
  92. from keras.preprocessing import image
  93. import matplotlib.pyplot as plt
  94. import matplotlib.image as mpimg
  95. import matplotlib.pyplot as plt
  96. import matplotlib.image as mpimg
  97. %matplotlib inline
  98.  
  99. uploaded = files.upload()
  100.  
  101. for fn in uploaded.keys():
  102. #predic
  103. path = fn
  104. img = image.load_img(path, target_size=(150, 150))
  105. imgplot = plt.imshow(img)
  106. x = image.img_to_array(img)
  107. x = np.expand_dims(x, axis=0)
  108. images = np.vstack([x])
  109. classes = model.predict(images, batch_size=32)
  110.  
  111. print(fn)
  112. hasil = np.argmax(classes)
  113. if classes[0][0]==0:
  114. print('rock')
  115. elif classes[0][1]==1:
  116. print('paper')
  117. elif classes[0][2]==2:
  118. print('scissors')
Advertisement
Add Comment
Please, Sign In to add comment