{
  "id": 310263,
  "title": "mixup in tf notebook",
  "url": "/competitions/happy-whale-and-dolphin/discussion/310263",
  "author_name": "Time Master",
  "post_date": "2022-02-28T13:10:09.861000",
  "votes": 5,
  "comment_count": 0,
  "views": 0,
  "content": "<p>How to implement mixup augumentation in the public Tensorflow version Notebook? I want to use callbacks, but not familiar with tensorflow, many mistakes…</p>\n<pre><code>from tensorflow.keras.callbacks import LambdaCallback\n# https://github.com/OFRIN/Tensorflow_MixUp/blob/master/Train_MixUp.py\ndef mixup():\n  def MixUp(batch,logs):\n    print(batch)\n    images,labels=batch\n    print(images,labels)\n    indexs = np.random.permutation(config.BATCH_SIZE)\n    alpha = np.random.beta(config.MIXUP_ALPHA, config.MIXUP_ALPHA, config.BATCH_SIZE)\n\n    image_alpha = alpha.reshape((config.BATCH_SIZE, 1, 1, 1))\n    label_alpha = alpha.reshape((config.BATCH_SIZE, 1))\n\n    x1, x2 = images, images[indexs]\n    y1, y2 = labels, labels[indexs]\n\n    images = image_alpha * x1 + (1 - image_alpha) * x2\n    labels = label_alpha * y1 + (1 - label_alpha) * y2\n\n    return images, labels\n\n    mixup = LambdaCallback(\n    on_batch_end=MixUp)\n    return mixup\n</code></pre>\n<p>then:</p>\n<pre><code>print('#### Image Size %i with EfficientNet B%i and batch_size %i'%\n      (config.IMAGE_SIZE,config.EFF_NET,config.BATCH_SIZE))\n\nhistory = model.fit(train_dataset,\n                validation_data = val_dataset,\n                steps_per_epoch = STEPS_PER_EPOCH,\n                epochs = config.EPOCHS,\n                callbacks = [mixup(),snap,get_lr_callback(),train_logger,sv_loss], \n                verbose = VERBOSE)\n</code></pre>",
  "messages": [
    {
      "id": 1707431,
      "postDate": "2022-02-28T13:10:09.860Z",
      "content": "<p>How to implement mixup augumentation in the public Tensorflow version Notebook? I want to use callbacks, but not familiar with tensorflow, many mistakes…</p>\n<pre><code>from tensorflow.keras.callbacks import LambdaCallback\n# https://github.com/OFRIN/Tensorflow_MixUp/blob/master/Train_MixUp.py\ndef mixup():\n  def MixUp(batch,logs):\n    print(batch)\n    images,labels=batch\n    print(images,labels)\n    indexs = np.random.permutation(config.BATCH_SIZE)\n    alpha = np.random.beta(config.MIXUP_ALPHA, config.MIXUP_ALPHA, config.BATCH_SIZE)\n\n    image_alpha = alpha.reshape((config.BATCH_SIZE, 1, 1, 1))\n    label_alpha = alpha.reshape((config.BATCH_SIZE, 1))\n\n    x1, x2 = images, images[indexs]\n    y1, y2 = labels, labels[indexs]\n\n    images = image_alpha * x1 + (1 - image_alpha) * x2\n    labels = label_alpha * y1 + (1 - label_alpha) * y2\n\n    return images, labels\n\n    mixup = LambdaCallback(\n    on_batch_end=MixUp)\n    return mixup\n</code></pre>\n<p>then:</p>\n<pre><code>print('#### Image Size %i with EfficientNet B%i and batch_size %i'%\n      (config.IMAGE_SIZE,config.EFF_NET,config.BATCH_SIZE))\n\nhistory = model.fit(train_dataset,\n                validation_data = val_dataset,\n                steps_per_epoch = STEPS_PER_EPOCH,\n                epochs = config.EPOCHS,\n                callbacks = [mixup(),snap,get_lr_callback(),train_logger,sv_loss], \n                verbose = VERBOSE)\n</code></pre>",
      "rawMarkdown": "How to implement mixup augumentation in the public Tensorflow version Notebook? I want to use callbacks, but not familiar with tensorflow, many mistakes...\n```\nfrom tensorflow.keras.callbacks import LambdaCallback\n# https://github.com/OFRIN/Tensorflow_MixUp/blob/master/Train_MixUp.py\ndef mixup():\n  def MixUp(batch,logs):\n    print(batch)\n    images,labels=batch\n    print(images,labels)\n    indexs = np.random.permutation(config.BATCH_SIZE)\n    alpha = np.random.beta(config.MIXUP_ALPHA, config.MIXUP_ALPHA, config.BATCH_SIZE)\n\n    image_alpha = alpha.reshape((config.BATCH_SIZE, 1, 1, 1))\n    label_alpha = alpha.reshape((config.BATCH_SIZE, 1))\n\n    x1, x2 = images, images[indexs]\n    y1, y2 = labels, labels[indexs]\n\n    images = image_alpha * x1 + (1 - image_alpha) * x2\n    labels = label_alpha * y1 + (1 - label_alpha) * y2\n\n    return images, labels\n\n    mixup = LambdaCallback(\n    on_batch_end=MixUp)\n    return mixup\n```\n\nthen:\n```\nprint('#### Image Size %i with EfficientNet B%i and batch_size %i'%\n      (config.IMAGE_SIZE,config.EFF_NET,config.BATCH_SIZE))\n\nhistory = model.fit(train_dataset,\n                validation_data = val_dataset,\n                steps_per_epoch = STEPS_PER_EPOCH,\n                epochs = config.EPOCHS,\n                callbacks = [mixup(),snap,get_lr_callback(),train_logger,sv_loss], \n                verbose = VERBOSE)\n```",
      "votes": 5
    }
  ],
  "comments": [],
  "raw_markdown_by_id": {
    "1707431": "How to implement mixup augumentation in the public Tensorflow version Notebook? I want to use callbacks, but not familiar with tensorflow, many mistakes...\n```\nfrom tensorflow.keras.callbacks import LambdaCallback\n# https://github.com/OFRIN/Tensorflow_MixUp/blob/master/Train_MixUp.py\ndef mixup():\n  def MixUp(batch,logs):\n    print(batch)\n    images,labels=batch\n    print(images,labels)\n    indexs = np.random.permutation(config.BATCH_SIZE)\n    alpha = np.random.beta(config.MIXUP_ALPHA, config.MIXUP_ALPHA, config.BATCH_SIZE)\n\n    image_alpha = alpha.reshape((config.BATCH_SIZE, 1, 1, 1))\n    label_alpha = alpha.reshape((config.BATCH_SIZE, 1))\n\n    x1, x2 = images, images[indexs]\n    y1, y2 = labels, labels[indexs]\n\n    images = image_alpha * x1 + (1 - image_alpha) * x2\n    labels = label_alpha * y1 + (1 - label_alpha) * y2\n\n    return images, labels\n\n    mixup = LambdaCallback(\n    on_batch_end=MixUp)\n    return mixup\n```\n\nthen:\n```\nprint('#### Image Size %i with EfficientNet B%i and batch_size %i'%\n      (config.IMAGE_SIZE,config.EFF_NET,config.BATCH_SIZE))\n\nhistory = model.fit(train_dataset,\n                validation_data = val_dataset,\n                steps_per_epoch = STEPS_PER_EPOCH,\n                epochs = config.EPOCHS,\n                callbacks = [mixup(),snap,get_lr_callback(),train_logger,sv_loss], \n                verbose = VERBOSE)\n```"
  }
}