小编And*_*Ito的帖子

在Keras实施暹罗NN

因此,我正在尝试实施这篇关于Siamese神经网络的论文:Sumit Chopra,Raia Hadsell和Yann LeCun(2005),通过应用于面部验证来区分相似性度量.不过,我正在使用CIFAR10数据集,有10个类.

为方便起见,再现了一条腿的规格.符号:C_x是卷积层,S_x是子采样层,F_x是完全连接的层; 使用共享索引x:

  1. C1:特征映射:15,内核大小=(7,7)
  2. S2:特征图:15,视野=(2,2)
  3. C3:特征映射:45,内核大小=(6,6)
  4. S4:特征图:45,视野=(4,3)
  5. C5:特征映射:250,内核大小=(5,5)
  6. F6(完全连接层):没有.单位= 50

我试过的

model = Sequential()

#C1
model.add(Convolution2D(15, 7, 7,
activation='relu',
border_mode='same',
input_shape=input_img_shape))
print("C1 shape: ", model.output_shape)

#S2
model.add(MaxPooling2D((2,2), border_mode='same'))
print("S2 shape: ", model.output_shape)
#...

#C5
model.add(Convolution2D(250, 5, 5, 
activation='relu', 
border_mode='same'))
print("C5 shape: ", model.output_shape)

#F6
model.add(Dense(50))
Run Code Online (Sandbox Code Playgroud)

这会抛出一条长错误信息,我认为这是一个重塑错误.错误的片段:

Exception: Input 0 is incompatible with layer dense_13: expected
ndim=2, found ndim=4
Run Code Online (Sandbox Code Playgroud)

我知道问题是在最后的Dense层中被隔离的,因为如果我将它注释掉,代码会顺利进行.但我不确定我应该如何塑造/指定我的最终完全连接层,以便它与先前的卷积层兼容?

我看过的一些地方

是一个相关的问题,虽然实现略有不同(似乎在撰写本文时keras中没有'Siamese'核心层).我知道Theano中也有实现,如果我不能在keras中执行它,我会牢记这一点.

谢谢!

conv-neural-network keras

9
推荐指数
1
解决办法
6598
查看次数

Python pandas:保留具有最高列值的行

假设我有一个学生考试成绩的数据框,每个学生学习不同的科目。每个学生可以多次参加每个科目的考试,只保留最高分(满分 100 分)。例如,假设我有一个包含所有测试记录的数据框:

| student_name | subject | test_number | score | 
|--------------|---------|-------------|-------|
| sarah        | maths   | test1       | 78    |
| sarah        | maths   | test2       | 71    |
| sarah        | maths   | test3       | 83    |
| sarah        | physics | test1       | 91    |
| sarah        | physics | test2       | 97    |
| sarah        | history | test1       | 83    |
| sarah        | history | test2       | 87    |
| joan         | maths …
Run Code Online (Sandbox Code Playgroud)

python pandas

6
推荐指数
2
解决办法
1901
查看次数

python pandas:将列转换为行

我有一张桌子:

country | name  | medals_won | year
-----------------------------------
US      | sarah |      1     | 2010
US      | sarah |      2     | 2011
US      | sarah |      5     | 2015
US      | alice |      3     | 2010
US      | alice |      4     | 2012
US      | alice |      1     | 2015
AU      | jones |      2     | 2013
AU      | jones |      8     | 2015
Run Code Online (Sandbox Code Playgroud)

我希望它像:

country | name  | 2010 | 2011 | 2012 | 2013 | 2014 | …
Run Code Online (Sandbox Code Playgroud)

python pandas

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

Keras 卷积神经网络验证精度不变

我在一堆我自己的图像数据上运行卷积神经网络(这个),形状(通道数,高度,宽度)=(3, 30, 30)。我有76960个训练样本,19240个测试样本,一共有39个类。最后几块代码是:

# Train the model using Stochastic grad descent + momentum
sgd = SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True)
cnn.compile(loss='categorical_crossentropy',
             optimizer=sgd,
             metrics=['accuracy'])


batch_size = 128
nb_epoch = 50

cnn.fit(x_train, y_train,
        batch_size = batch_size,
        nb_epoch = nb_epoch,
        validation_data=(x_test, y_test),
       shuffle=True)
Run Code Online (Sandbox Code Playgroud)

训练损失和准确率随 epoch 变化,但验证准确率仅从第 1 个到第 2 个 epoch(从 0.3387 到 0.3357)发生变化,然后一直保持在 0.3357。

我尝试过不同的批量大小(32、128 或 256)、学习率(从 1e-6 到 0.1,一路乘以 10)并尝试使用或不使用数据标准化(基本均值偏移和除以 sd )。这些都没有奏效。

python classification neural-network

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

python将字符串转换为逻辑门函数

我有一个 python 字符串,如:"(a and b and c) or (d and e)",其中 a、b、c、d 和 e 是某种条件。您可能会看到,这实际上是一个逻辑表达式。

我想以某种方式将其转换为类似逻辑门的函数,例如f。所以我会向f传递一些真实的条件,并得到逻辑结果。例子:

  • 如果我通过它(d and e)(即 d 和 c 为真),则f返回True
  • 如果我通过它(a and b and c)f返回True
  • 如果我只是通过它af返回False
  • 如果我只是通过它b and cf返回False

我不知道如何解决这样的问题。strtobool不能完全满足我的要求,我不确定如何将给定的字符串转换为函数。至于将 true 条件作为输入传递,我正在考虑将True布尔值列表传递给它,即所有条件都是False默认值。例如从上面的第一个例子:

d = True; e = True
f([d, e])
> …
Run Code Online (Sandbox Code Playgroud)

python

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

Keras:如何记录验证损失

注意:这是一个重复的问题,但我不是在寻找答案.相反,如何更好地找到自己的答案.

如何从模型中跨越时代记录损失,训练准确性,测试损失和测试准确度?我想绘制一个图表,显示每个时期的验证损失.

我知道回调对象,可以在fit()中调用,或者也许是model.history与它有关,但检查源和文档字符串只是我的代码墙.例如,Numpy通常提供一个非常小的用例作为非常简单的实现的示例.然而我知道答案只是一个单行,因为这只是一个输入问题.

python keras

0
推荐指数
1
解决办法
6246
查看次数