小编Mar*_*jko的帖子

尝试在 Keras 中创建 BLSTM 网络时出现类型错误

我对 Keras 和深度学习有点陌生。我目前正在尝试复制这篇论文,但是当我编译第二个模型(使用 LSTM)时,出现以下错误:

"TypeError: unsupported operand type(s) for +: 'NoneType' and 'int'"
Run Code Online (Sandbox Code Playgroud)

该模型的描述是这样的:

  1. 输入(长度T是设备特定的窗口尺寸)
  2. size分别使用滤波器3、5 和 7 的并行一维卷积, stride=1, number of filters=32, activation type=linear,border mode=same
  3. 连接并行一维卷积输出的合并层
  4. 双向LSTM由前向LSTM和后向LSTM组成,output_dim=128
  5. 双向LSTM由前向LSTM和后向LSTM组成,output_dim=128
  6. 致密层, output_dim=128,activation type=ReLU
  7. 致密层, output_dim= T,activation type=linear

我的代码是这样的:

from keras import layers, Input
from keras.models import Model

def lstm_net(T):
    input_layer = Input(shape=(T,1))
    branch_a = layers.Conv1D(32, 3, activation='linear', padding='same', strides=1)(input_layer)
    branch_b = layers.Conv1D(32, 5, activation='linear', padding='same', strides=1)(input_layer) …
Run Code Online (Sandbox Code Playgroud)

python-3.x lstm keras recurrent-neural-network keras-layer

5
推荐指数
1
解决办法
868
查看次数

Keras的fit_generator应该在每个纪元后重置发电机吗?

我试图使用fit_generator自定义生成器来读取对于内存来说太大的数据.我想要训练125万行,所以我一次产生50,000行.fit_generator有25个steps_per_epoch,我认为每个时期会带来1.25MM.我添加了一个print语句,以便我可以看到该进程正在做多少偏移,并且当它进入epoch 2时,我发现它超过了max.该文件中总共有175万条记录,并且一次它传递了10个步骤,它在create_feature_matrix调用中得到一个索引错误(因为它没有引入任何行).

def get_next_data_batch():
    import gc
    nrows = 50000
    skiprows = 0

    while True:
        d = pd.read_csv(file_loc,skiprows=range(1,skiprows),nrows=nrows,index_col=0)
        print(skiprows)
        x,y = create_feature_matrix(d)
        yield x,y
        skiprows = skiprows + nrows
        gc.collect()
get_data = get_next_data_batch()

... set up a Keras NN ...

model.fit_generator(get_next_data_batch(), epochs=100,steps_per_epoch=25,verbose=1,workers=4,callbacks=callbacks_list)
Run Code Online (Sandbox Code Playgroud)

我使用fit_generator是错误的还是需要对我的自定义生成器进行一些更改才能使其正常工作?

machine-learning generator neural-network python-3.x keras

5
推荐指数
1
解决办法
2090
查看次数

Flask SQL Alchemy vs MyPy - 模型类型错误

我碰到下面的问题来了的组合flask_sqlalchemymypy。当我定义一个新的 ORM 对象时:

class Foo(db.Model):
    pass
Run Code Online (Sandbox Code Playgroud)

其中db使用SQL Alchemy创建的数据库应用于flask应用程序,mypy类型检查会产生以下错误:

错误:类不能子类化“模型”(类型为“Any”)

我想提一下,我已经sqlalchemy-stubs安装了。有人可以帮我解决这个错误吗?

python sqlalchemy flask-sqlalchemy mypy

5
推荐指数
2
解决办法
2165
查看次数

在 Keras 中使用 `predict` 按照给定的顺序预测一维数组

我正在 Keras 中进行回归,使用具有 1 个输入、10 个隐藏单元和 1 个输出的神经网络。我像往常一样适合模型:

model.fit(x_train, y_train, nb_epoch=15, batch_size=32)
Run Code Online (Sandbox Code Playgroud)

现在我想预测一个xtest(asx_trainy_train) 一个非常大的一维 numpy 数组。在 Keras 网站的文档中,您可以找到:

predict(self, x, batch_size=32, verbose=0)
Run Code Online (Sandbox Code Playgroud)

所以我知道你必须这样做:

model.predict(xtest, batch_size=32)
Run Code Online (Sandbox Code Playgroud)

我对batch_size指令感到困惑。这是否意味着predict以随机方式获取 xtest 的值?

因为我需要的是以与 xtest 给出的完全相同的顺序predict生成输出。我的意思是,首先预测 xtest[0] 的输出,然后预测 xtest[1] 的输出,然后预测 xtest[2] 的输出......等等。使用该数组预测,我想与我拥有的实际 ytest 进行一些比较并进行一些统计。所以,顺序是必不可少的。我该怎么做?

先感谢您。

python machine-learning neural-network deep-learning keras

4
推荐指数
1
解决办法
1060
查看次数

Keras,模型的输出predict_proba

文档中,predict_proba(self, x, batch_size=32, verbose=1)

逐批生成输入样本的类概率预测.

并返回

Numpy概率预测数组.

假设我的模型是二元分类模型,输出是[a, b],a是概率class_0,b是概率class_1

python machine-learning neural-network deep-learning keras

4
推荐指数
1
解决办法
7397
查看次数

像在caffe中一样切片/分割keras中的图层

我用这个转换器将Caffe模型转换为Keras.但是我的一个层是类型的slice,它也需要转换,但转换器目前不支持这个并引发异常.它有什么工作吗?这是我的图层:

layer {
    name: "slice_label"
    type: SLICE
    bottom: "label"
    top: "label_wpqr"
    top: "label_xyz"
    slice_param {
        slice_dim: 1
        slice_point: 4
    }
}
Run Code Online (Sandbox Code Playgroud)

python machine-learning neural-network caffe keras

4
推荐指数
1
解决办法
3088
查看次数

用Keras训练LSTM时的奇怪损失曲线

我正在尝试为一些二进制分类问题训练LSTM.当我loss在训练后绘制曲线时,会有奇怪的选择.这里有些例子:

在此输入图像描述

在此输入图像描述

这是基本代码

model = Sequential()
model.add(recurrent.LSTM(128, input_shape = (columnCount,1), return_sequences=True))
model.add(Dropout(0.5))
model.add(recurrent.LSTM(128, return_sequences=False))
model.add(Dropout(0.5))
model.add(Dense(1))
model.add(Activation('sigmoid'))
model.compile(optimizer='adam', 
             loss='binary_crossentropy', 
             metrics=['accuracy'])

new_train = X_train[..., newaxis]

history = model.fit(new_train, y_train, nb_epoch=500, batch_size=100, 
                    callbacks = [EarlyStopping(monitor='val_loss', min_delta=0.0001, patience=2, verbose=0, mode='auto'), 
                                 ModelCheckpoint(filepath="model.h5", verbose=0, save_best_only=True)],
                    validation_split=0.1)

# list all data in history
print(history.history.keys())
# summarize history for loss
plt.plot(history.history['loss'])
plt.plot(history.history['val_loss'])
plt.title('model loss')
plt.ylabel('loss')
plt.xlabel('epoch')
plt.legend(['train', 'test'], loc='upper left')
plt.show()
Run Code Online (Sandbox Code Playgroud)

我不明白为什么这样的选择发生?有任何想法吗?

machine-learning neural-network deep-learning lstm keras

4
推荐指数
1
解决办法
1800
查看次数

Keras:test_on_batch和predict_on_batch之间的区别

在Philippe Remy 关于有状态LSTM 的博客文章中,他在底部说"你可能必须通过调用predict_on_batch()或test_on_batch()来手动进行验证/测试".

查看文档,predict_on_batch执行此操作:

predict_on_batch(self, x)

Returns predictions for a single batch of samples.

Arguments

    x: Input samples, as a Numpy array.

Returns

Numpy array(s) of predictions.
Run Code Online (Sandbox Code Playgroud)

test_on_batch执行此操作:

test_on_batch(self, x, y, sample_weight=None)

Test the model on a single batch of samples.

Arguments

    x: Numpy array of test data, or list of Numpy arrays if the model has multiple inputs. If all inputs in the model are named, you can also pass a dictionary mapping input …
Run Code Online (Sandbox Code Playgroud)

python machine-learning neural-network deep-learning keras

4
推荐指数
1
解决办法
3752
查看次数

keras中的segnet:新数组的总大小必须保持不变错误

我正在用Python实现segnet。以下是代码。

img_w = 480
img_h = 360
pool_size = 2

def build_model(img_w, img_h, pool_size):
    n_labels = 12

    kernel = 3

    encoding_layers = [
        Conv2D(64, (kernel, kernel), input_shape=(img_h, img_w, 3), padding='same'),
        BatchNormalization(),
        Activation('relu'),
        Convolution2D(64, (kernel, kernel), padding='same'),
        BatchNormalization(),
        Activation('relu'),
        MaxPooling2D(pool_size = (pool_size,pool_size)),

        Convolution2D(128, (kernel, kernel), padding='same'),
        BatchNormalization(),
        Activation('relu'),
        Convolution2D(128, (kernel, kernel), padding='same'),
        BatchNormalization(),
        Activation('relu'),
        MaxPooling2D(pool_size = (pool_size,pool_size)),

        Convolution2D(256, (kernel, kernel), padding='same'),
        BatchNormalization(),
        Activation('relu'),
        Convolution2D(256, (kernel, kernel), padding='same'),
        BatchNormalization(),
        Activation('relu'),
        Convolution2D(256, (kernel, kernel), padding='same'),
        BatchNormalization(),
        Activation('relu'),
        MaxPooling2D(pool_size = (pool_size,pool_size)),

        Convolution2D(512, (kernel, kernel), …
Run Code Online (Sandbox Code Playgroud)

python machine-learning neural-network deep-learning keras

4
推荐指数
1
解决办法
1134
查看次数

为什么Keras会抛出ResourceExhaustedError?

Keras在训练卷积自动编码器时抛出ResourceExhaustedError.我正在运行Tensorflow后端.这台电脑既有Nvidia Tesla,内存为11 Gbs,Nvidia Quadro也有6 Gbs的内存.似乎Tensorflow正在使用两个GPU?但我对此并不太清楚.这是我正在使用的代码的最小示例.在我的示例中,数据是一个numpy数组维度=(100,1080,1920,1).

from keras.layers import Convolution2D, MaxPooling2D, UpSampling2D, Activation
from keras.models import Sequential
model = Sequential()
model.add(Convolution2D(16, 3, 3, border_mode='same', input_shape=(1080, 1920, 1)))
model.add(Activation('relu'))
model.add(MaxPooling2D((2, 2), border_mode='same'))
model.add(Convolution2D(16, 3, 3, border_mode='same'))
model.add(Activation('relu'))
model.add(UpSampling2D((2, 2)))
model.add(Convolution2D(1, 3, 3, border_mode='same'))
model.add(Activation('relu'))
model.compile(optimizer='adadelta', loss='binary_crossentropy')
model.fit(data, data)
Run Code Online (Sandbox Code Playgroud)

看起来GPU的内存不足.自动编码器有2625个变量.所以这似乎不足以填满视频内存.阵列数据的大小为1600 MB.所以这也不应该填满视频公羊.我猜这个问题与nb_epoch和batch_size有关,但我不清楚这些参数是做什么的.有没有办法改变这些参数来解决我的问题?

gpu out-of-memory neural-network keras tensorflow

3
推荐指数
1
解决办法
3496
查看次数