标签: keras-2

Keras中初始v3的预处理功能

这是Keras中初始v3的预处理功能.它与其他模型预处理完全不同.

def preprocess_input(x):
    x /= 255.
    x -= 0.5
    x *= 2.
    return x
Run Code Online (Sandbox Code Playgroud)

1.为什么没有平均减法?

2.为什么没有RGB到BGR?

3. [-1,1]之间的映射对于这个模型是正常的吗?

这是Keras中VGG和ResNet的预处理功能:

def preprocess_input(x, data_format=None):
    if data_format is None:
        data_format = K.image_data_format()
    assert data_format in {'channels_last', 'channels_first'}

    if data_format == 'channels_first':
        # 'RGB'->'BGR'
        x = x[:, ::-1, :, :]
        # Zero-center by mean pixel

        x[:, 0, :, :] -= 103.939
        x[:, 1, :, :] -= 116.779
        x[:, 2, :, :] -= 123.68
    else:
        # 'RGB'->'BGR'
        x = x[:, :, :, ::-1]
        # Zero-center …
Run Code Online (Sandbox Code Playgroud)

deep-learning keras keras-2

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

Keras网络永远无法对最后一堂课进行分类

我一直致力于我的项目深度学习语言检测,这是一个具有这些层的网络,可以从16种编程语言中识别:

在此输入图像描述

这是生成网络的代码:

# Setting up the model
graph_in = Input(shape=(sequence_length, number_of_quantised_characters))
convs = []
for i in range(0, len(filter_sizes)):
    conv = Conv1D(filters=num_filters,
                  kernel_size=filter_sizes[i],
                  padding='valid',
                  activation='relu',
                  strides=1)(graph_in)
    pool = MaxPooling1D(pool_size=pooling_sizes[i])(conv)
    flatten = Flatten()(pool)
    convs.append(flatten)

if len(filter_sizes)>1:
    out = Concatenate()(convs)
else:
    out = convs[0]

graph = Model(inputs=graph_in, outputs=out)

# main sequential model
model = Sequential()


model.add(Dropout(dropout_prob[0], input_shape=(sequence_length, number_of_quantised_characters)))
model.add(graph)
model.add(Dense(hidden_dims))
model.add(Dropout(dropout_prob[1]))
model.add(Dense(number_of_classes))
model.add(Activation('softmax'))
model.compile(loss='categorical_crossentropy', optimizer='adadelta', metrics=['accuracy'])
Run Code Online (Sandbox Code Playgroud)

所以我的最后一个语言类是SQL,在测试阶段,它永远无法正确预测SQL,它的得分为0%.我认为这是由于SQL样本质量差(实际上它们很差)所以我删除了这个类并开始训练15个类.令我惊讶的是,现在F#文件的检测率为0%,而F#是删除SQL后的最后一个类(即最后一个位置为1且其余为0的单热矢量).现在,如果一个训练有16的网络用于对抗15,那么它将获得98.5%的非常高的成功率.

我使用的代码非常简单,主要在defs.pydata_helper.py中提供

以下是针对16个类测试的16个课程的网络训练结果:

Final result: 14827/16016 (0.925761738262)
xml:        995/1001 (0.994005994006)
fsharp: …
Run Code Online (Sandbox Code Playgroud)

python deep-learning keras keras-2

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

Keras2 ImageDataGenerator 还是 TensorFlow tf.data?

随着 Keras2 即将在 TensorFlow 和 TensorFlow 2.0 中实现,您应该将 KerasImageDataGenerator 与 eg 一起使用,flow_from_directory还是现在tf.data也可以与fit_genearatorKeras一起使用的 TensorFlow ?

这两种方法是否会因服务于不同的目的而占有一席之地,还是会tf.data成为未来的新方法而 Keras 生成器将被弃用?

谢谢,我想走这条路,让我在这个快速发展的领域保持更长时间的了解。

python keras tensorflow keras-2

9
推荐指数
3
解决办法
7110
查看次数

keras:使用一个模型输出作为另一个模型输入

我在InceptionResNetV2模型之前添加了一个密集层(预训练)这是InceptionResNetV2输出

model_base = InceptionResNetV2(include_top=True, weights='imagenet')
x = model_base.get_layer('avg_pool').output
x = Dense(3, activation='softmax')(x)
Run Code Online (Sandbox Code Playgroud)

这是将添加的图层

input1 = Input(shape=input_shape1)
pre1 = Conv2D(filters=3, kernel_size=(5, 5), padding='SAME', 
input_shape=input_shape1, name='first_dense')(input1)
pre = Model(inputs=input1, outputs=pre1)
Run Code Online (Sandbox Code Playgroud)

这是两个模型的组合

 after = Model(inputs=pre.output, outputs=x)

 model = Model(inputs=input1, outputs=after.output)

 model.compile(optimizer='sgd', loss='categorical_crossentropy', metrics=['accuracy'])
Run Code Online (Sandbox Code Playgroud)

使用

pre.output
Run Code Online (Sandbox Code Playgroud)

after.input
Run Code Online (Sandbox Code Playgroud)

但它不起作用.我该如何解决?

model computer-vision deep-learning keras keras-2

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

Keras多输入AttributeError:“ NoneType”对象没有属性“ inbound_nodes”

我正在尝试建立下图所示的模型。想法是采用多个分类特征(单热矢量)并将其分别嵌入,然后将这些嵌入的矢量与3D张量组合以用于LSTM。

使用Keras2.0.2中的以下代码,在创建Model()具有多个输入的对象时,会引发AttributeError: 'NoneType' object has no attribute 'inbound_nodes'类似于问题的问题。谁能帮助我找出问题所在?

模型:

模型

码:

from keras.layers import Dense, LSTM, Input
from keras.layers.merge import concatenate
from keras import backend as K
from keras.models import Model

cat_feats_dims = [315, 14] # Dimensions of the cat_feats
emd_inputs = [Input(shape=(in_size,)) for in_size in cat_feats_dims]
emd_out = concatenate([Dense(20, use_bias=False)(inp) for inp in emd_inputs])
emd_out_3d = K.repeat(emd_out, 10)

lstm_input = Input(shape=(10,5))

merged = concatenate([emd_out_3d,lstm_input])

lstm_output = LSTM(32)(merged)
dense_output = Dense(1, activation='linear')(lstm_output)

model …
Run Code Online (Sandbox Code Playgroud)

python deep-learning keras keras-2

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

不应该是model.trainable =模型下的假冻结权重?

我试图冻结免费训练的VGG16的图层(下面的'conv_base'),并在它们上面添加新图层以进行特征提取.我希望在(ret1)/之后(ret2)拟合模型之前从'conv_base'获得相同的预测结果,但事实并非如此.这是检查体重冻结的错误方法吗?

加载VGG16并设置为无法处理

conv_base  = applications.VGG16(weights='imagenet', include_top=False, input_shape=[150, 150, 3]) 
conv_base.trainable = False
Run Code Online (Sandbox Code Playgroud)

模型拟合前的结果

ret1 = conv_base.predict(np.ones([1, 150, 150, 3]))
Run Code Online (Sandbox Code Playgroud)

在VGG16顶部添加图层并编译模型

model = models.Sequential()
model .add(conv_base)
model .add(layers.Flatten())
model .add(layers.Dense(10, activation='relu'))
model .add(layers.Dense(1, activation='sigmoid'))
m.compile('rmsprop', 'binary_crossentropy', ['accuracy'])
Run Code Online (Sandbox Code Playgroud)

适合模型

m.fit_generator(train_generator, 100, validation_data=validation_generator, validation_steps=50)
Run Code Online (Sandbox Code Playgroud)

模型拟合后的结果

ret2 = conv_base.predict(np.ones([1, 150, 150, 3]))
Run Code Online (Sandbox Code Playgroud)

希望这是真的,但事实并非如此.

np.equal(ret1, ret2)
Run Code Online (Sandbox Code Playgroud)

keras keras-2

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

Keras 2.0.0:如何在回调函数“on_epoch_end()”中访问和修改训练数据?

我在 Theano 中使用 Keras 2.0.0。

我想更新每个时期之间的训练数据。我可以使用 nb_epochs=1 在 for 循环中完成它,但使用 on_epoch_end 回调会更优雅。

这是我的暂定代码,基于 Keras 1 示例(博客文章):

class callback_change_X_train(keras.callbacks.Callback):

def on_epoch_end(self, epoch, logs={}):
    X_train = my_function_to_update_X_train(...)
    self.model.training_data[0] = X_train
Run Code Online (Sandbox Code Playgroud)

不幸的是,似乎 self.model.training_data 不再存在。

非常感谢任何帮助!

callback keras-2

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

restore_best_weights问题keras提前停止

我正在使用keras的早期学习来完成我的深度学习项目.这里的文件提到了恢复最佳权重的非常有用的想法.但不知怎的,我还没能使用它.我在keras 2.2.2/TF 1.10,从anaconda安装.呼叫很简单如下.有什么问题吗?

es = EarlyStopping(monitor ='val_acc',min_delta = 1e-4,耐心=耐心_,verbose = 1,restore_best_weights = True)

init()得到了一个意外的关键字参数'restore_best_weights'

keras keras-2

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

AttributeError:模块“keras.backend”没有属性“common”

我尝试执行一些项目。但我有一个attribute error. 我检查了我的 Tensorflow 和 Keras 版本。

Name: tensorflow
Version: 2.3.1
Name: Keras
Version: 2.4.3
Summary: Deep Learning for humans
python 3.8.2 
Run Code Online (Sandbox Code Playgroud)

代码在这里。

self.dim_ordering = K.common.image_dim_ordering()
Run Code Online (Sandbox Code Playgroud)

错误信息:

self.dim_ordering = K.common.image_dim_ordering()
AttributeError: module 'keras.backend' has no attribute 'common'
Run Code Online (Sandbox Code Playgroud)

可以用 K.image_data_format()代替 吗k.common.image_dim_ordering()

python keras tensorflow keras-2 tensorflow2.0

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

Keras ModelCheckpoint 监控多个值

我想使用 Keras ModelCheckpoint 回调来监视多个参数(我有一个多任务网络)。只需要一个回调就可以吗?或者我需要在许多回调中这样做吗?

ckechpoint的创建:

checkpointer = ModelCheckpoint(filepath='checkpoints/weights-{epoch:02d}.hdf5', monitor='val_O1_categorical_accuracy' , verbose=1, save_best_only=True, mode='max')
Run Code Online (Sandbox Code Playgroud)

我要监控的第二个参数:val_O2_categorical_accuracy

在列表中这样做是行不通的。IE

checkpointer = ModelCheckpoint(filepath='checkpoints/weights-{epoch:02d}.hdf5', monitor=['val_O1_categorical_accuracy','val_O2_categorical_accuracy'] , verbose=1, save_best_only=True, mode='max')
Run Code Online (Sandbox Code Playgroud)

类型错误:不可散列的类型:“列表”

python conv-neural-network keras tensorflow keras-2

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