小编Ove*_*gon的帖子

ValueError:使用序列设置数组元素

这个Python代码:

import numpy as p

def firstfunction():
    UnFilteredDuringExSummaryOfMeansArray = []
    MeanOutputHeader=['TestID','ConditionName','FilterType','RRMean','HRMean',
                      'dZdtMaxVoltageMean','BZMean','ZXMean','LVETMean','Z0Mean',
                      'StrokeVolumeMean','CardiacOutputMean','VelocityIndexMean']
    dataMatrix = BeatByBeatMatrixOfMatrices[column]
    roughTrimmedMatrix = p.array(dataMatrix[1:,1:17])


    trimmedMatrix = p.array(roughTrimmedMatrix,dtype=p.float64)  #ERROR THROWN HERE


    myMeans = p.mean(trimmedMatrix,axis=0,dtype=p.float64)
    conditionMeansArray = [TestID,testCondition,'UnfilteredBefore',myMeans[3], myMeans[4], 
                           myMeans[6], myMeans[9], myMeans[10], myMeans[11], myMeans[12],
                           myMeans[13], myMeans[14], myMeans[15]]
    UnFilteredDuringExSummaryOfMeansArray.append(conditionMeansArray)
    secondfunction(UnFilteredDuringExSummaryOfMeansArray)
    return

def secondfunction(UnFilteredDuringExSummaryOfMeansArray):
    RRDuringArray = p.array(UnFilteredDuringExSummaryOfMeansArray,dtype=p.float64)[1:,3]
    return

firstfunction()
Run Code Online (Sandbox Code Playgroud)

抛出此错误消息:

File "mypath\mypythonscript.py", line 3484, in secondfunction
RRDuringArray = p.array(UnFilteredDuringExSummaryOfMeansArray,dtype=p.float64)[1:,3]
ValueError: setting an array element with a sequence.
Run Code Online (Sandbox Code Playgroud)

任何人都可以告诉我如何解决上面破坏的代码中的问题,以便它停止抛出错误消息?


编辑: 我做了一个打印命令来获取矩阵的内容,这是打印出来的:

UnFilteredDuringExSummaryOfMeansArray是:

[['TestID', 'ConditionName', 'FilterType', 'RRMean', 'HRMean', 'dZdtMaxVoltageMean', 'BZMean', 'ZXMean', …
Run Code Online (Sandbox Code Playgroud)

python arrays numpy slice

167
推荐指数
5
解决办法
73万
查看次数

为什么TensorFlow 2比TensorFlow 1慢得多?

许多用户都将其作为切换到Pytorch的原因,但是我还没有找到牺牲/最渴望的实用质量,速度和执行力的理由/解释。

以下是代码基准测试性能,即TF1与TF2的对比-TF1的运行速度提高了47%至276%

我的问题是:在图形或硬件级别上,什么导致如此显着的下降?


寻找详细的答案-已经熟悉广泛的概念。相关的Git

规格:CUDA 10.0.130,cuDNN 7.4.2,Python 3.7.4,Windows 10,GTX 1070


基准测试结果


UPDATE:禁用每下面的代码不会急于执行没有帮助。但是,该行为是不一致的:有时以图形方式运行有很大帮助,而其他时候其运行速度相对于Eager

由于TF开发人员没有出现在任何地方,因此我将自己进行调查-可以跟踪相关的Github问题的进展。

更新2:分享大量实验结果,并附有解释;应该在今天完成。


基准代码

# use tensorflow.keras... to benchmark tf.keras; used GPU for all above benchmarks
from keras.layers import Input, Dense, LSTM, Bidirectional, Conv1D
from keras.layers import Flatten, Dropout
from keras.models import Model
from keras.optimizers import Adam
import keras.backend as K
import numpy as np
from time import time

batch_shape = (32, 400, 16) …
Run Code Online (Sandbox Code Playgroud)

python performance-testing keras tensorflow tensorflow2.0

94
推荐指数
2
解决办法
4140
查看次数

如何使用TFRecord数据集快速制作TensorFlow + Keras?

什么是如何将TensorFlow TFRecord与Keras模型和tf.session.run()一起使用,同时将数据集保存在具有队列运行程序的张量中?

以下是一个可行的代码段,但需要进行以下改进:

  • 使用Model API
  • 指定一个Input()
  • 从TFRecord加载数据集
  • 并行运行数据集(例如使用queuerunner)

这是片段,有几条TODO线表明需要什么:

from keras.models import Model
import tensorflow as tf
from keras import backend as K
from keras.layers import Dense, Input
from keras.objectives import categorical_crossentropy
from tensorflow.examples.tutorials.mnist import input_data

sess = tf.Session()
K.set_session(sess)

# Can this be done more efficiently than placeholders w/ TFRecords?
img = tf.placeholder(tf.float32, shape=(None, 784))
labels = tf.placeholder(tf.float32, shape=(None, 10))

# TODO: Use Input() 
x = Dense(128, activation='relu')(img)
x = Dense(128, activation='relu')(x)
preds = Dense(10, activation='softmax')(x)
# TODO: …
Run Code Online (Sandbox Code Playgroud)

machine-learning deep-learning keras tensorflow keras-layer

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

16
推荐指数
2
解决办法
764
查看次数

为什么np.dot不精确?(n维数组)

假设我们采用np.dot两个'float32'2D数组:

res = np.dot(a, b)   # see CASE 1
print(list(res[0]))  # list shows more digits
Run Code Online (Sandbox Code Playgroud)
[-0.90448684, -1.1708503, 0.907136, 3.5594249, 1.1374011, -1.3826287]
Run Code Online (Sandbox Code Playgroud)

数字。除了它们可以更改:


案例1:切片a

np.random.seed(1)
a = np.random.randn(9, 6).astype('float32')
b = np.random.randn(6, 6).astype('float32')

for i in range(1, len(a)):
    print(list(np.dot(a[:i], b)[0])) # full shape: (i, 6)
Run Code Online (Sandbox Code Playgroud)
[-0.9044868,  -1.1708502, 0.90713596, 3.5594249, 1.1374012, -1.3826287]
[-0.90448684, -1.1708503, 0.9071359,  3.5594249, 1.1374011, -1.3826288]
[-0.90448684, -1.1708503, 0.9071359,  3.5594249, 1.1374011, -1.3826288]
[-0.90448684, -1.1708503, 0.907136,   3.5594249, 1.1374011, -1.3826287]
[-0.90448684, -1.1708503, 0.907136,   3.5594249, 1.1374011, -1.3826287] …
Run Code Online (Sandbox Code Playgroud)

c python arrays precision numpy

15
推荐指数
1
解决办法
437
查看次数

LambdaType 与函数类型

有什么不同?文档对此没有任何说明,并且它们help()是相同的。是否有一个对象isinstance会因一个而不是另一个失败?

python python-3.x

11
推荐指数
2
解决办法
415
查看次数

RNN正则化:要对哪个组件进行正则化?

我正在构建一个用于分类的RNN(在RNN之后有一个softmax层)。要进行正则化的选项有很多,我不确定是否只尝试所有这些,效果会一样吗?在什么情况下我应该规范哪些组件?

这些组件是:

  • 内核权重(图层输入)
  • 循环重量
  • 偏压
  • 激活功能(层输出)

python regularized deep-learning keras recurrent-neural-network

8
推荐指数
1
解决办法
2925
查看次数

矩阵向量差的有效元素级argmin

假设一个数组a.shape == (N, M)和一个向量v.shape == (N,)。我们的目标是计算argminabsv距离减去每一个元素a-也就是说,

out = np.zeros(N, M)
for i in range(N):
    for j in range(M):
        out[i, j] = np.argmin(np.abs(a[i, j] - v))
Run Code Online (Sandbox Code Playgroud)

我有一个通过的矢量化实现np.matlib.repmat,它要快得多,但需要O(M*N^2)内存,在实践中是不可接受的。计算仍然在 CPU 上完成,所以最好的办法似乎是在 C 中实现 for 循环作为扩展,但也许 Numpy 已经实现了这个逻辑。

可以?任何可以有效实现上述功能的 Numpy 函数?

python performance for-loop numpy python-3.x

8
推荐指数
1
解决办法
127
查看次数

您的主分支不受保护

运行一堆尝试创建和删除标签和分支的命令后,我看到以下内容

在此输入图像描述

它是什么,我应该如何处理?

删除了与实际无关的内容)

git github

8
推荐指数
1
解决办法
9082
查看次数

将时序数据馈入有状态LSTM的正确方法?

假设我有一个整数序列:

0,1,2, ..

并希望根据给定的最后3个整数来预测下一个整数,例如:

[0,1,2]->5[3,4,5]->6

假设我像这样设置模型:

batch_size=1
time_steps=3
model = Sequential()
model.add(LSTM(4, batch_input_shape=(batch_size, time_steps, 1), stateful=True))
model.add(Dense(1))
Run Code Online (Sandbox Code Playgroud)

据我了解,模型具有以下结构(请原图):

在此处输入图片说明

第一个问题:我的理解正确吗?

请注意,我已经画出了C_{t-1}, h_{t-1}进入图片的先前状态,因为指定时会暴露出来stateful=True。在这个简单的“下一个整数预测”问题中,应通过提供此额外的信息来改善性能(只要先前的状态是由前三个整数产生的)。

这使我想到了一个主要问题: 似乎标准做法(例如,参见此博客文章TimeseriesGenerator keras预处理实用程序)是在训练过程中向模型提供一组交错的输入。

例如:

batch0: [[0, 1, 2]]
batch1: [[1, 2, 3]]
batch2: [[2, 3, 4]]
etc
Run Code Online (Sandbox Code Playgroud)

这让我感到困惑,因为这似乎需要第一Lstm单元的输出(对应于第一时间步长)。看这个图:

从tensorflow docs

stateful:布尔值(默认为False)。如果为True,则批次中索引i的每个样本的最后状态将用作下一个批次中索引i的样本的初始状态。

似乎此“内部”状态不可用,并且所有可用状态都是最终状态。看这个图:

因此,如果我的理解是正确的(显然不是这样),那么在使用时是否不应该将不重叠的样本窗口馈送到模型中stateful=True?例如:

batch0: [[0, 1, 2]]
batch1: [[3, 4, 5]]
batch2: [[6, 7, 8]]
etc
Run Code Online (Sandbox Code Playgroud)

python machine-learning lstm keras tensorflow

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