小编Bol*_*ain的帖子

Keras - fit_generator()中如何使用批次和时期?

我有一个8000帧的视频,我想在每个200帧的批次上训练一个Keras模型.我有一个帧生成器,逐帧循环通过视频,并将(3 x 480 x 640)帧累积成一个X形状的numpy矩阵(200, 3, 480, 640)- (批量大小,rgb,帧高,帧宽) - 并且产生XY每第200帧:

import cv2
...
def _frameGenerator(videoPath, dataPath, batchSize):
    """
    Yield X and Y data when the batch is filled.
    """
    camera = cv2.VideoCapture(videoPath)
    width = camera.get(3)
    height = camera.get(4)
    frameCount = int(camera.get(7))  # Number of frames in the video file.

    truthData = _prepData(dataPath, frameCount)

    X = np.zeros((batchSize, 3, height, width))
    Y = np.zeros((batchSize, 1))

    batch = 0
    for frameIdx, truth in enumerate(truthData): …
Run Code Online (Sandbox Code Playgroud)

python generator keras tensorflow

18
推荐指数
2
解决办法
1万
查看次数

Python变量在发生器内失去范围?

以下代码返回NameError: global name 'self' is not defined.为什么?

lengths = [3, 10]
self.fooDict = getOrderedDict(stuff)

if not all(0 < l < len(self.fooDict) for l in lengths):
    raise ValueError("Bad lengths!")
Run Code Online (Sandbox Code Playgroud)

请注意,这self.fooDict是一个有35个条目的OrderedDict(从集合库导入).当我尝试调试时,下面的代码执行没有错误:

(Pdb) len(self.dataDict)
35
(Pdb) all(0 < size < 35 for size in lengths)
True
Run Code Online (Sandbox Code Playgroud)

但是下面的debugginf代码给出了原始错误:

(Pdb) baz = len(self.dataDict)
(Pdb) all(0 < size < baz for size in lengths)
NameError: global name 'baz' is not defined
Run Code Online (Sandbox Code Playgroud)

python scope generator

14
推荐指数
1
解决办法
1442
查看次数

为什么带括号和逗号的numpy数组的索引行为不同?

我倾向于用括号来索引numpy数组(矩阵),但我注意到当我想切片数组(矩阵)时我必须使用逗号表示法.为什么是这样?例如,

>>> x = numpy.array([[1, 2], [3, 4], [5, 6]])
>>> x
array([[1, 2],
       [3, 4],
       [5, 6]])
>>> x[1][1]
4                 # expected behavior
>>> x[1,1]
4                 # expected behavior
>>> x[:][1]
array([3, 4])     # huh?
>>> x[:,1]
array([2, 4, 6])  # expected behavior
Run Code Online (Sandbox Code Playgroud)

python indexing numpy slice

14
推荐指数
2
解决办法
3566
查看次数

LSTM与Keras进行小批量培训和在线测试

我想在Keras中实现LSTM用于流时间序列预测 - 即,在线运行,一次获得一个数据点.这在这里得到了很好的解释,但正如人们所假设的那样,在线LSTM的训练时间可能非常慢.我想在迷你批次上训练我的网络,并在线测试(运行预测).在Keras这样做的最佳方法是什么?

例如,小批量可以是[33, 34, 42, 33, 32, 33, 36, ... 24, 23]在连续时间步骤发生的1000个数据值()的序列.为了训练网络,我已经指定了一个X形状数组(900, 100, 1),其中有900个长度为100的序列和一个y形状数组(900, 1).例如,

X[0] = [[33], [34], [42], [33], ...]]
X[1] = [[34], [42], [33], [32], ...]]
...
X[999] = [..., [24]]

y[999] = [23]
Run Code Online (Sandbox Code Playgroud)

因此,对于每个序列X[i],都有一个对应的y[i]代表时间序列中的下一个值 - 我们想要预测的内容.

在测试中,我想预测下一个数据值1000到1999.我通过(1, 100, 1)为1000到1999的每个步骤提供一个形状数组来做到这一点,模型试图在下一步预测值.

这是我的问题的推荐方法和设置吗?启用有状态可能是实现纯粹在线实施的方式,但在Keras中,这需要一致batch_input_shape的培训和测试,这对我的小批量培训和在线测试的意图不利.或者我有办法做到这一点吗?

更新:尝试以@nemo推荐的方式实施网络

我在博客文章"使用Keras的Python中使用LSTM循环神经网络进行时间序列预测"的示例网络上运行了我自己的数据集,然后尝试将预测阶段实现为有状态网络.

模型构建和培训对于两者都是相同的:

# Create and fit the LSTM network
numberOfEpochs = 10 …
Run Code Online (Sandbox Code Playgroud)

lstm keras

13
推荐指数
1
解决办法
7082
查看次数

Android openRawResource()不适用于drawable

我正在尝试通过这样做来创建输入流

InputStream is = (InputStream) getResources().openRawResource(R.drawable.image1);
Run Code Online (Sandbox Code Playgroud)

但我遇到了关于我的drawable文件(R.drawable.image1)的错误"类型原始的预期资源".image1是一个png,位于我的res/drawable文件夹中.

有任何想法吗???

android image inputstream drawable

12
推荐指数
2
解决办法
1万
查看次数

子类化Python namedtuple

Python的namedtuple作为一个轻量级,不可变的数据类非常有用.我喜欢将它们用于簿记参数而不是字典.当需要更多功能时,例如简单的文档字符串或默认值,您可以轻松地将namedtuple重构为类.但是,我已经看到继承自namedtuple的类.他们获得了什么功能,他们失去了什么表现?例如,我会将其实现为

from collections import namedtuple

class Pokemon(namedtuple('Pokemon', 'name type level')):
    """
    Attributes
    ----------
    name : str
        What do you call your Pokemon?
    type : str
        grass, rock, electric, etc.
    level : int
        Experience level [0, 100]
    """
     __slots__ = ()
Run Code Online (Sandbox Code Playgroud)

唯一的目的是能够干净地记录attrs,并__slots__用于防止创建__dict__(保持namedtuples的轻量级特性).

是否有更好的建议使用轻量级数据类来记录参数?注意我使用的是Python 2.7.

python namedtuple

12
推荐指数
1
解决办法
7325
查看次数

Go中高效的读写CSV

下面的Go代码读入10,000记录CSV(时间戳times和浮点数values),对数据运行一些操作,然后将原始值写入另一个CSV以及另外一列score.然而它非常慢(即几小时,但大部分都是这样calculateStuff())而且我很好奇,如果我可以处理的CSV读/写有任何低效率.

package main

import (
  "encoding/csv"
  "log"
  "os"
  "strconv"
)

func ReadCSV(filepath string) ([][]string, error) {
  csvfile, err := os.Open(filepath)

  if err != nil {
    return nil, err
  }
  defer csvfile.Close()

  reader := csv.NewReader(csvfile)
  fields, err := reader.ReadAll()

  return fields, nil
}

func main() {
  // load data csv
  records, err := ReadCSV("./path/to/datafile.csv")
  if err != nil {
    log.Fatal(err)
  }

  // write results to a new csv
  outfile, err := os.Create("./where/to/write/resultsfile.csv"))
  if …
Run Code Online (Sandbox Code Playgroud)

csv go

8
推荐指数
2
解决办法
2万
查看次数

HTTP响应代码的Python异常

当查询API的HTTP响应代码不是200时,我想提出一个Python标准异常,但是我应该使用什么特定的异常?现在我提出一个OSError:

if response.status_code != 200:
  raise OSError("Response " + str(response.status_code)
                  + ": " + response.content)
Run Code Online (Sandbox Code Playgroud)

我知道内置异常文档.

python exception http

7
推荐指数
2
解决办法
1万
查看次数

从 PyPi 下载轮子

如何从PyPi 上列出的包中下载特定的轮子?我假设我会使用wgetor curl,但我不确定要使用哪些参数。

curl wget pypi python-wheel

7
推荐指数
2
解决办法
1610
查看次数

将pandas DataFrame列附加到CSV

我正在尝试将pandas DataFrame(单列)附加到现有的CSV,就像这篇文章一样,但它不起作用!相反,我的列被添加到csv的底部,并反复重复(csv >>行的大小为列).这是我的代码:

with open(outputPath, "a") as resultsFile:
    print len(scores)
    scores.to_csv(resultsFile, header=False)
    print resultsFile
Run Code Online (Sandbox Code Playgroud)

终端输出:4032 <open file '/Users/alavin/nta/NAB/results/numenta/artificialWithAnomaly/numenta_art_load_balancer_spikes.csv', mode 'a' at 0x1088686f0>

先感谢您!

python csv pandas

6
推荐指数
1
解决办法
1万
查看次数