Keras自动下载的数据集/模型存放位置介绍

Mac

# 数据集
~/.keras/datasets/

# 模型
~/.keras/models/

Linux

# 数据集
~/.keras/datasets/

Windows

# win10
C:\Users\user_name\.keras\datasets

补充知识:Keras_gan生成自己的数据,并保存模型

我就废话不多说了,大家还是直接看代码吧~

from __future__ import print_function, division

from keras.datasets import mnist
from keras.layers import Input, Dense, Reshape, Flatten, Dropout
from keras.layers import BatchNormalization, Activation, ZeroPadding2D
from keras.layers.advanced_activations import LeakyReLU
from keras.layers.convolutional import UpSampling2D, Conv2D
from keras.models import Sequential, Model
from keras.optimizers import Adam
import os
import matplotlib.pyplot as plt
import sys
import numpy as np

class GAN():
 def __init__(self):
 self.img_rows = 3
 self.img_cols = 60
 self.channels = 1
 self.img_shape = (self.img_rows, self.img_cols, self.channels)
 self.latent_dim = 100

 optimizer = Adam(0.0002, 0.5)

 # 构建和编译判别器
 self.discriminator = self.build_discriminator()
 self.discriminator.compile(loss='binary_crossentropy',
  optimizer=optimizer,
  metrics=['accuracy'])

 # 构建生成器
 self.generator = self.build_generator()

 # 生成器输入噪音,生成假的图片
 z = Input(shape=(self.latent_dim,))
 img = self.generator(z)

 # 为了组合模型,只训练生成器
 self.discriminator.trainable = False

 # 判别器将生成的图像作为输入并确定有效性
 validity = self.discriminator(img)

 # The combined model (stacked generator and discriminator)
 # 训练生成器骗过判别器
 self.combined = Model(z, validity)
 self.combined.compile(loss='binary_crossentropy', optimizer=optimizer)

 def build_generator(self):

 model = Sequential()
 model.add(Dense(64, input_dim=self.latent_dim))
 model.add(LeakyReLU(alpha=0.2))
 model.add(BatchNormalization(momentum=0.8))

 model.add(Dense(128))
 model.add(LeakyReLU(alpha=0.2))
 model.add(BatchNormalization(momentum=0.8))

 model.add(Dense(256))
 model.add(LeakyReLU(alpha=0.2))
 model.add(BatchNormalization(momentum=0.8))

 model.add(Dense(512))
 model.add(LeakyReLU(alpha=0.2))
 model.add(BatchNormalization(momentum=0.8))

 model.add(Dense(1024))
 model.add(LeakyReLU(alpha=0.2))
 model.add(BatchNormalization(momentum=0.8))

 #np.prod(self.img_shape)=3x60x1
 model.add(Dense(np.prod(self.img_shape), activation='tanh'))
 model.add(Reshape(self.img_shape))

 model.summary()

 noise = Input(shape=(self.latent_dim,))
 img = model(noise)

 #输入噪音,输出图片
 return Model(noise, img)

 def build_discriminator(self):

 model = Sequential()

 model.add(Flatten(input_shape=self.img_shape))

 model.add(Dense(1024))
 model.add(LeakyReLU(alpha=0.2))

 model.add(Dense(512))
 model.add(LeakyReLU(alpha=0.2))

 model.add(Dense(256))
 model.add(LeakyReLU(alpha=0.2))

 model.add(Dense(128))
 model.add(LeakyReLU(alpha=0.2))

 model.add(Dense(64))
 model.add(LeakyReLU(alpha=0.2))

 model.add(Dense(1, activation='sigmoid'))
 model.summary()

 img = Input(shape=self.img_shape)
 validity = model(img)
 return Model(img, validity)

 def train(self, epochs, batch_size=128, sample_interval=50):

 ############################################################
 #自己数据集此部分需要更改
 # 加载数据集
 data = np.load('data/相对大小分叉.npy')
 data = data[:,:,0:60]
 # 归一化到-1到1
 data = data * 2 - 1
 data = np.expand_dims(data, axis=3)
 ############################################################

 # Adversarial ground truths
 valid = np.ones((batch_size, 1))
 fake = np.zeros((batch_size, 1))

 for epoch in range(epochs):

  # ---------------------
  # 训练判别器
  # ---------------------

  # data.shape[0]为数据集的数量,随机生成batch_size个数量的随机数,作为数据的索引
  idx = np.random.randint(0, data.shape[0], batch_size)

  #从数据集随机挑选batch_size个数据,作为一个批次训练
  imgs = data[idx]

  #噪音维度(batch_size,100)
  noise = np.random.normal(0, 1, (batch_size, self.latent_dim))

  # 由生成器根据噪音生成假的图片
  gen_imgs = self.generator.predict(noise)

  # 训练判别器,判别器希望真实图片,打上标签1,假的图片打上标签0
  d_loss_real = self.discriminator.train_on_batch(imgs, valid)
  d_loss_fake = self.discriminator.train_on_batch(gen_imgs, fake)
  d_loss = 0.5 * np.add(d_loss_real, d_loss_fake)

  # ---------------------
  # 训练生成器
  # ---------------------

  noise = np.random.normal(0, 1, (batch_size, self.latent_dim))

  # Train the generator (to have the discriminator label samples as valid)
  g_loss = self.combined.train_on_batch(noise, valid)

  # 打印loss值
  print ("%d [D loss: %f, acc.: %.2f%%] [G loss: %f]" % (epoch, d_loss[0], 100*d_loss[1], g_loss))

  # 没sample_interval个epoch保存一次生成图片
  if epoch % sample_interval == 0:
  self.sample_images(epoch)
  if not os.path.exists("keras_model"):
   os.makedirs("keras_model")
  self.generator.save_weights("keras_model/G_model%d.hdf5" % epoch,True)
  self.discriminator.save_weights("keras_model/D_model%d.hdf5" %epoch,True)

 def sample_images(self, epoch):
 r, c = 10, 10
 # 重新生成一批噪音,维度为(100,100)
 noise = np.random.normal(0, 1, (r * c, self.latent_dim))
 gen_imgs = self.generator.predict(noise)

 # 将生成的图片重新归整到0-1之间
 gen = 0.5 * gen_imgs + 0.5
 gen = gen.reshape(-1,3,60)

 fig,axs = plt.subplots(r,c)
 cnt = 0
 for i in range(r):
  for j in range(c):
  xy = gen[cnt]
  for k in range(len(xy)):
   x = xy[k][0:30]
   y = xy[k][30:60]
   if k == 0:
   axs[i,j].plot(x,y,color='blue')
   if k == 1:
   axs[i,j].plot(x,y,color='red')
   if k == 2:
   axs[i,j].plot(x,y,color='green')
   plt.xlim(0.,1.)
   plt.ylim(0.,1.)
   plt.xticks(np.arange(0,1,0.1))
   plt.xticks(np.arange(0,1,0.1))
   axs[i,j].axis('off')
  cnt += 1
 if not os.path.exists("keras_imgs"):
  os.makedirs("keras_imgs")
 fig.savefig("keras_imgs/%d.png" % epoch)
 plt.close()

 def test(self,gen_nums=100,save=False):
 self.generator.load_weights("keras_model/G_model4000.hdf5",by_name=True)
 self.discriminator.load_weights("keras_model/D_model4000.hdf5",by_name=True)
 noise = np.random.normal(0,1,(gen_nums,self.latent_dim))
 gen = self.generator.predict(noise)
 gen = 0.5 * gen + 0.5
 gen = gen.reshape(-1,3,60)
 print(gen.shape)
 ###############################################################
 #直接可视化生成图片
 if save:
  for i in range(0,len(gen)):
  plt.figure(figsize=(128,128),dpi=1)
  plt.plot(gen[i][0][0:30],gen[i][0][30:60],color='blue',linewidth=300)
  plt.plot(gen[i][1][0:30],gen[i][1][30:60],color='red',linewidth=300)
  plt.plot(gen[i][2][0:30],gen[i][2][30:60],color='green',linewidth=300)
  plt.axis('off')
  plt.xlim(0.,1.)
  plt.ylim(0.,1.)
  plt.xticks(np.arange(0,1,0.1))
  plt.yticks(np.arange(0,1,0.1))
  if not os.path.exists("keras_gen"):
   os.makedirs("keras_gen")
  plt.savefig("keras_gen"+os.sep+str(i)+'.jpg',dpi=1)
  plt.close()
 ##################################################################
 #重整图片到0-1
 else:
  for i in range(len(gen)):
  plt.plot(gen[i][0][0:30],gen[i][0][30:60],color='blue')
  plt.plot(gen[i][1][0:30],gen[i][1][30:60],color='red')
  plt.plot(gen[i][2][0:30],gen[i][2][30:60],color='green')
  plt.xlim(0.,1.)
  plt.ylim(0.,1.)
  plt.xticks(np.arange(0,1,0.1))
  plt.xticks(np.arange(0,1,0.1))
  plt.show()

if __name__ == '__main__':
 gan = GAN()
 gan.train(epochs=300000, batch_size=32, sample_interval=2000)
# gan.test(save=True)

以上这篇Keras自动下载的数据集/模型存放位置介绍就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • 使用Keras中的ImageDataGenerator进行批次读图方式

    ImageDataGenerator位于keras.preprocessing.image模块当中,可用于做数据增强,或者仅仅用于一个批次一个批次的读进图片数据.一开始以为ImageDataGenerator是用来做数据增强的,但我的目的只是想一个batch一个batch的读进图片而已,所以一开始没用它,后来发现它是有这个功能的,而且使用起来很方便. ImageDataGenerator类包含了如下参数:(keras中文教程) ImageDataGenerator(featurewise_cen

  • 浅谈keras2 predict和fit_generator的坑

    1.使用predict时,必须设置batch_size,否则效率奇低. 查看keras文档中,predict函数原型: predict(self, x, batch_size=32, verbose=0) 说明: 只使用batch_size=32,也就是说每次将batch_size=32的数据通过PCI总线传到GPU,然后进行预测.在一些问题中,batch_size=32明显是非常小的.而通过PCI传数据是非常耗时的. 所以,使用的时候会发现预测数据时效率奇低,其原因就是batch_size太小

  • 在keras中model.fit_generator()和model.fit()的区别说明

    首先Keras中的fit()函数传入的x_train和y_train是被完整的加载进内存的,当然用起来很方便,但是如果我们数据量很大,那么是不可能将所有数据载入内存的,必将导致内存泄漏,这时候我们可以用fit_generator函数来进行训练. keras中文文档 fit fit(x=None, y=None, batch_size=None, epochs=1, verbose=1, callbacks=None, validation_split=0.0, validation_data=N

  • 浅谈keras通过model.fit_generator训练模型(节省内存)

    前言 前段时间在训练模型的时候,发现当训练集的数量过大,并且输入的图片维度过大时,很容易就超内存了,举个简单例子,如果我们有20000个样本,输入图片的维度是224x224x3,用float32存储,那么如果我们一次性将全部数据载入内存的话,总共就需要20000x224x224x3x32bit/8=11.2GB 这么大的内存,所以如果一次性要加载全部数据集的话是需要很大内存的. 如果我们直接用keras的fit函数来训练模型的话,是需要传入全部训练数据,但是好在提供了fit_generator,

  • Keras自动下载的数据集/模型存放位置介绍

    Mac # 数据集 ~/.keras/datasets/ # 模型 ~/.keras/models/ Linux # 数据集 ~/.keras/datasets/ Windows # win10 C:\Users\user_name\.keras\datasets 补充知识:Keras_gan生成自己的数据,并保存模型 我就废话不多说了,大家还是直接看代码吧~ from __future__ import print_function, division from keras.datasets

  • Powershell Profiles配置文件的存放位置介绍

    适用于:Windows PowerShell 2.0, Windows PowerShell 3.0 当我们打开一个PowerShell对话框,并在里面创建一些变量(variables).函数(functions)时,这些变量.函数均只在当前会话中有效.一旦我们关闭这个对话框重新打开PowerShell时,这些变量都不存在了.如果我们想保留这些设置,我们就需要用到profile,翻译过来就是配置文件.在PowerShell启动的时候,会自动导入配置文件里面的设置.这有点像autorun.bat,

  • python下载的库包存放路径

    python下载的库包存放位置: 打开python的安装目录,双击打开Lib文件夹 找到"site-packages"文件夹并打开,下载的库包就出来了 内容扩展: 将依赖包目录放置bai到*:\Python*\Lib\site-packages\中,即python的安装目录中. 首先确du定API目录下是否有__init__.py文件,如果没zhi有,请新建一个.dao 打开API主运行文件,查看里面的类名称.此处为main.py文件,类为class dcVerCode. 此处以导入m

  • Python实现Keras搭建神经网络训练分类模型教程

    我就废话不多说了,大家还是直接看代码吧~ 注释讲解版: # Classifier example import numpy as np # for reproducibility np.random.seed(1337) # from keras.datasets import mnist from keras.utils import np_utils from keras.models import Sequential from keras.layers import Dense, Act

  • Python爬虫实现百度图片自动下载

    制作爬虫的步骤 制作一个爬虫一般分以下几个步骤: 分析需求分析网页源代码,配合开发者工具编写正则表达式或者XPath表达式正式编写 python 爬虫代码 效果预览 运行效果如下: 存放图片的文件夹: 需求分析 我们的爬虫至少要实现两个功能:一是搜索图片,二是自动下载. 搜索图片:最容易想到的是爬百度图片的结果,我们就上百度图片看看: 随便搜索几个关键字,可以看到已经搜索出来很多张图片: 分析网页 我们点击右键,查看源代码: 打开源代码之后,发现一堆源代码比较难找出我们想要的资源. 这个时候,就

  • 使用Keras预训练好的模型进行目标类别预测详解

    前言 最近开始学习深度学习相关的内容,各种书籍.教程下来到目前也有了一些基本的理解.参考Keras的官方文档自己做一个使用application的小例子,能够对图片进行识别,并给出可能性最大的分类. 闲言少叙,开始写代码 环境搭建相关就此省去,网上非常多.我觉得没啥难度 from keras.applications.resnet50 import ResNet50 from keras.preprocessing import image from keras.applications.res

  • Keras中的两种模型:Sequential和Model用法

    在Keras中有两种深度学习的模型:序列模型(Sequential)和通用模型(Model).差异在于不同的拓扑结构. 序列模型 Sequential 序列模型各层之间是依次顺序的线性关系,模型结构通过一个列表来制定. from keras.models import Sequential from keras.layers import Dense, Activation layers = [Dense(32, input_shape = (784,)), Activation('relu')

  • 基于Python实现视频自动下载软件

    目录 序言 效果展示 下载视频 下载弹幕 下载评论 软件生成 打包 序言 哈喽兄弟们,今天来实现一个Python采集视频.弹幕.评论与一体的小软件. 平常咱们都是直接代码运行,不过今天我们做成软件,这样的话,咱们不仅能自己用,还能分享给小伙伴,女朋友一起使用. 内容有点多,拿好小本本,做好笔记,发车了~ 效果展示 我们先来看看效果 整体界面 我随便找个视频下载一下 弹幕和评论我都顺便下载了 有一说一,确实方便,就是下载视频太大的话,会卡一下. 不过我这里视频没有做去水印,所以下载下来还是有水印的

  • Python实现葵花8号卫星数据自动下载实例

    目录 一:数据源介绍 二:FTP服务器描述 三: 程序描述 四:注意事项 五:代码 一:数据源介绍 本篇文章介绍的是使用python实现对葵花8号卫星数据进行自动下载. 葵花8号卫星是日本的一颗静止轨道气象卫星,覆盖范围为60S-60N, 80E-160W,除了提供十分钟一幅的原始卫星影像外,还提供了如气溶胶光学厚度(AOT,也叫AOD).叶绿素A.海表温度.云层厚度以及火点等多种产品,这些数据都可以进行下载. 二:FTP服务器描述 首先需要在葵花8官网申请帐号. 可以通过FTP(ftp.ptr

  • keras读取训练好的模型参数并把参数赋值给其它模型详解

    介绍 本博文中的代码,实现的是加载训练好的模型model_halcon_resenet.h5,并把该模型的参数赋值给两个不同的新的model. 函数式模型 官网上给出的调用一个训练好模型,并输出任意层的feature. model = Model(inputs=base_model.input, outputs=base_model.get_layer('block4_pool').output) 但是这有一个问题,就是新的model,如果输入inputs和训练好的model的inputs大小不

随机推荐