这是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) 我一直致力于我的项目深度学习语言检测,这是一个具有这些层的网络,可以从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.py和data_helper.py中提供
以下是针对16个类测试的16个课程的网络训练结果:
Final result: 14827/16016 (0.925761738262)
xml: 995/1001 (0.994005994006)
fsharp: …
Run Code Online (Sandbox Code Playgroud) 随着 Keras2 即将在 TensorFlow 和 TensorFlow 2.0 中实现,您应该将 KerasImageDataGenerator
与 eg 一起使用,flow_from_directory
还是现在tf.data
也可以与fit_genearator
Keras一起使用的 TensorFlow ?
这两种方法是否会因服务于不同的目的而占有一席之地,还是会tf.data
成为未来的新方法而 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)
但它不起作用.我该如何解决?
我正在尝试建立下图所示的模型。想法是采用多个分类特征(单热矢量)并将其分别嵌入,然后将这些嵌入的矢量与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) 我试图冻结免费训练的VGG16的图层(下面的'conv_base'),并在它们上面添加新图层以进行特征提取.我希望在(ret1)/之后(ret2)拟合模型之前从'conv_base'获得相同的预测结果,但事实并非如此.这是检查体重冻结的错误方法吗?
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)
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) 我在 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 不再存在。
非常感谢任何帮助!
我正在使用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'
我尝试执行一些项目。但我有一个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()
?
我想使用 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)
类型错误:不可散列的类型:“列表”