- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我目前正在使用大型图像数据集 (~60GB) 来训练 CNN (Keras/Tensorflow) 以执行简单的分类任务。图像是视频帧,因此在时间上高度相关,所以我在生成巨大的 .hdf5 文件时已经将数据洗牌了一次......为了将数据输入 CNN 而不必一次将整个数据集加载到内存中,我编写了一个简单的批处理生成器(请参见下面的代码)。现在我的问题:通常建议在每个训练时期后对数据进行洗牌,对吗? (出于 SGD 收敛的原因?)但要这样做,我必须在每个纪元之后加载整个数据集并对其进行洗牌,这正是我想避免使用批处理生成器的...所以:在每个 epoch 之后打乱数据集真的那么重要吗?如果是的话,我怎样才能尽可能高效地做到这一点?这是我的批处理生成器的当前代码:
def generate_batches_from_hdf5_file(hdf5_file, batch_size, dimensions, num_classes):
"""
Generator that returns batches of images ('xs') and labels ('ys') from a h5 file.
"""
filesize = len(hdf5_file['labels'])
while 1:
# count how many entries we have read
n_entries = 0
# as long as we haven't read all entries from the file: keep reading
while n_entries < (filesize - batch_size):
# start the next batch at index 0
# create numpy arrays of input data (features)
xs = hdf5_file['images'][n_entries: n_entries + batch_size]
xs = np.reshape(xs, dimensions).astype('float32')
# and label info. Contains more than one label in my case, e.g. is_dog, is_cat, fur_color,...
y_values = hdf5_file['labels'][n_entries:n_entries + batch_size]
#ys = keras.utils.to_categorical(y_values, num_classes)
ys = to_categorical(y_values, num_classes)
# we have read one more batch from this file
n_entries += batch_size
yield (xs, ys)
最佳答案
是的,改组可以提高性能,因为每次以相同顺序运行数据可能会让您陷入次优区域。
不要打乱整个数据。在数据中创建一个索引列表,然后将其洗牌。然后按顺序移动索引列表并使用其值从数据集中挑选数据。
关于python - 大 HDF5 数据集,如何在每个纪元后高效地洗牌,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46581434/
我将时间存储在 64 位整数中,格式为 20110103101419(即表示 2011-01-03 10:14:19)。如何将其转换为自 1970 年以来的秒数? 最佳答案 我的 C 有点生疏,但看看
我正在生成一个包含过去二十四小时事件 gnuplot 的图表,但时间轴看起来非常糟糕,因为它试图在最后一天每五分钟拟合一次长数字。 gnuplot 有什么方法可以将 x 轴视为纪元时间,并每隔一小时左
我当前正在使用 django 并输出 unix 纪元的日期(以秒为单位)。如何在 unix epoch 中使用 jquery time ago ? 我看到这个例子:2015 年 1 月 10 日 Ja
我在 Google Apps 脚本中将字符串转换为日期对象时遇到一些问题。 我的日期采用以下格式,来自第三方 API: 2013-01-17T17:34:50.507 我正在尝试将其转换为日期对象:
我使用一个库,该库使用以下结构来定义开始时间戳,如下所示。 struct SYSTEMTIME { /** year */ WORD year; /** month *
使用 perl,我试图估计自文件创建以来的时间。我想将本地时间转换为 unix 时间(纪元),然后取文件的 unix 时间并减去。 我面临的问题是,当我将 localtime 转换为 unixtime
我正在使用具有以下响应的 API: { dt: 1474664400, temp: { day: 51.93, min: 46.62, max: 53.53, nigh
我正在从 API 获取估计公交车到达时间的时间戳作为时间戳/纪元:1536589019000。如果我访问类似 this 的网站我得到了适当的格式: 2018 年 9 月 10 日星期一上午 7:16:
我使用的 API 将时间返回为 Unix 时间 (1424952512) 到目前为止,我可以使用将 unix 时间转换为 NSDate func timeStamp(unixTime: Double)
@Data public class SampleDate { private Date revisiondate; } @RequestMapping("/date") public Resp
我在论坛中搜索了我的问题,但一无所获。 :(这个日期时间转换让我发疯。 我尝试将毫秒纪元转换为日期时间。我在互联网上找到了这个方法: private DateTime TimeFromUnix
我有一个 dateTime 变量,我想将它转换为纪元的十进制值。 如何才能做到这一点? 我尝试使用: seconds-from-duration($time, xs:dateTime('1970-01
如何获取纪元中的当前日期值,即自 1970-1-1 以来经过的天数。我需要 unix shell 脚本中的解决方案。 最佳答案 Unix Date 命令将以纪元时间显示 命令是 date +"%s"
这个问题在这里已经有了答案: Convert from date to epoch-Oracle (3 个答案) 关闭 9 个月前。 在使用 Oracle SQL 获取 unix 纪元时间戳方面,有
你能解释一下下面这句话吗,这让我很困惑。1.迭代2.梯度下降步骤3.纪元4.批量大小。 最佳答案 在神经网络术语中: 一个epoch = 所有训练样本的一次前向传递和一次反向传递 批量大小 = 一次前
我在 PostgreSQL 中有一个字符串 "2016-10-25T00:14:30.000"。 我想将时间戳转换为整数,例如:1477354441 我想为该值添加自定义分钟数,例如147735444
我想从 Postgres 获取数据。有一个类型为 timestamp without timezone 的列。简单的 SELECT 返回我格式化的日期,但我只想要以毫秒为单位的时间戳。我如何在 SQL
我的文件包含格式为“[dd.mm.yyyy.] 文本值”的多行。我需要将其转换为“Unix 纪元 | 文本值”。我尝试使用 awk 来执行此操作,但似乎找不到正确的命令例如,如果文件是: [30.08
我的一个表中的一列是 DATE,目前它会自动填充该行创建时间的时间戳。时间戳看起来像 2013-02-10 19:56:12。无论如何,我可以自动使用 unix 纪元为其添加时间戳吗?我希望这是有道理
我需要将时区感知 date_range (TimeStamps) 转换为 UNIX 纪元值,以便在外部 Javascript 库中使用。 我的做法是: # Create localized test
我是一名优秀的程序员,十分优秀!