如何使用 keras 函数 fit_generator() 来训练并同时保存具有最低验证损失的模型权重?
我正在尝试训练CNN模型,根据他们的美学分数对图像进行分类.有2,00,000张图像,每张图像被超过100个主题评级.计算平均分数并将分数标准化.
分数的分布近似为高斯分布.所以我决定在为每个类分配适当的权重后建立一个10类分类模型,因为数据是不平衡的.
我的问题:
对于这个问题,分数是连续的,即0 <0.2 <0.3 <0.4 <0.5 <.. <1.那是否意味着这是一个回归问题?如果是这样,我如何平衡回归问题的数据,因为大多数数据点存在于0.4和0.6之间.
谢谢!
我有代表域名中每个字符的整数向量,还有代表时间轴信息的另一个整数向量。我需要将这两个向量都作为CNN模型的输入,以将域名归类为垃圾邮件或垃圾邮件。
例如,
代表域名的矢量-> 1 x 75矢量。向量中的每个元素代表域名中的每个字符。如果有1000个域名,则它将是1000 x 75形状的矩阵
表示时间轴信息的矢量-> 1 x 1440矢量。每个元素代表每分钟从特定域发送的邮件数。如果有1000个域名,则它将是一个形状为1000 x 1440的矩阵
如何将这两个向量输入到单个CNN模型中?
我当前的模型仅提供域名作为输入,
def build_model(max_features, maxlen):
"""Build CNN model"""
model = Sequential()
model.add(Embedding(max_features, 8, input_length=maxlen))
model.add(Convolution1D(6, 4, border_mode='same'))
model.add(Convolution1D(4, 4, border_mode='same'))
model.add(Convolution1D(2, 4, border_mode='same'))
model.add(Flatten())
#model.add(Dropout(0.2))
#model.add(Dense(2,activation='sigmoid'))
#model.add(Dense(180,activation='sigmoid'))
#model.add(Dropout(0.2))
model.add(Dense(2,activation='softmax'))
sgd = optimizers.SGD(lr=0.001, decay=1e-6, momentum=0.9, nesterov=True)
model.compile(loss='categorical_crossentropy', optimizer=sgd, metrics=['categorical_accuracy', 'f1score', 'precision', 'recall'])
Run Code Online (Sandbox Code Playgroud)
谢谢!
我想通过 curl 将图像发送到烧瓶服务器,我正在尝试这个 curl 命令
curl -F "file=@image.jpg" http://localhost:8000
Run Code Online (Sandbox Code Playgroud)
但它没有用
在服务器端,我通过此代码处理图像
@app.route('/home', methods=['POST'])
def home():
data =request.files['file']
img = cv2.imread(data)
fact_resp= model.predict(img)
return jsonify(fact_resp)
Run Code Online (Sandbox Code Playgroud)
fact_resp 是一个整数,我正在尝试使用 cv2 读取图像
有没有办法做到这一点?
我正在尝试训练一个用于面部性别和年龄检测的 cnn 模型。我的训练集包含彩色和灰度的面部图像。我如何标准化这个数据集?或者如何处理混合了灰度和彩色图像的数据集?
我正在尝试为图像分类问题训练 resnet50 模型。在我拥有的图像数据集上训练模型之前,我已经加载了“imagenet”预训练权重。我正在使用 keras 函数 flow_from_directory() 从目录加载图像。
train_datagen = ImageDataGenerator()
train_generator = train_datagen.flow_from_directory(
'./train_qcut_2_classes',
batch_size=batch_size,
shuffle=True,
target_size=input_size[1:],
class_mode='categorical')
test_datagen = ImageDataGenerator()
validation_generator = test_datagen.flow_from_directory(
'./validate_qcut_2_classes',
batch_size=batch_size,
target_size=input_size[1:],
shuffle=True,
class_mode='categorical')
Run Code Online (Sandbox Code Playgroud)
我将生成器作为参数传递给 fit_generator 函数。
hist2=model.fit_generator(train_generator,
samples_per_epoch=102204,
validation_data=validation_generator,
nb_val_samples=25547,
nb_epoch=80, callbacks=callbacks,
verbose=1)
Run Code Online (Sandbox Code Playgroud)
题:
有了这个设置,我如何使用 preprocess_input() 函数在将输入图像传递给模型之前对其进行预处理?
from keras.applications.resnet50 import preprocess_input
Run Code Online (Sandbox Code Playgroud)
我尝试使用 preprocessing_function 参数如下
train_datagen=ImageDataGenerator(preprocessing_function=preprocess_input)
train_generator = train_datagen.flow_from_directory(
'./train_qcut_2_classes',
batch_size=batch_size,
shuffle=True,
target_size=input_size[1:],
class_mode='categorical')
test_datagen = ImageDataGenerator(preprocessing_function=preprocess_input)
validation_generator = test_datagen.flow_from_directory(
'./validate_qcut_2_classes',
batch_size=batch_size,
target_size=input_size[1:],
shuffle=True,
class_mode='categorical')
Run Code Online (Sandbox Code Playgroud)
当我尝试提取预处理输出时,我得到了以下结果。
train_generator.next()[0][0]
array([[[ 91.06099701, 80.06099701, 96.06099701, ..., 86.06099701,
52.06099701, 12.06099701], …Run Code Online (Sandbox Code Playgroud) keras 中的输入形状是什么意思?
例如,我向 keras 模型发送形状为 (1 x 1440)-> 1 行和 1440 列(特征)的输入。总共有 70,000 个这样的向量。
但是当我从该层查询模型的输出形状时,
for layer in model.layers:
if layer.name == 'input2':
print layer.output
Run Code Online (Sandbox Code Playgroud)
输出:
Tensor("input2_6:0", shape=(?, 1440), dtype=float32)
Run Code Online (Sandbox Code Playgroud)
它说shape=(?, 1440)。这是什么意思?
谢谢!
我一直在探索使用预训练的 MITIE 模型进行命名实体提取。无论如何,我可以查看他们的实际 ner 模型,而不是使用预训练的模型吗?该模型是否可以开源?
python ×5
keras ×4
tensorflow ×2
convolution ×1
curl ×1
flask ×1
gaussian ×1
generator ×1
image ×1
model ×1
numpy ×1
rasa-nlu ×1
regression ×1
resnet ×1
validation ×1