我正在使用Theano和Keras并使用下面的命令,试图从.h5文件加载VGG Net的权重
VGG网络模型定义:
def VGG_16(weights_path=None):
model = Sequential()
model.add(ZeroPadding2D((1,1),input_shape=(3,224,224)))
model.add(Convolution2D(64, 3, 3, activation='relu'))
model.add(Zero
我总是假设model.fit()调用model.predict()某个地方,因为损失函数是用y\u true和y\u pred定义的。但是,我注意到model.predict()返回一个numpy数组,y\u pred是一个张量。y_pred不是来自预测函数吗
谢谢你的帮助 不,它不调用model.predict()
您可以查看源代码,但它相当长且复杂:谢谢,我明白了。如果我需要使用model.predict()的结果来定义一个损失函数,然后再回去微调LSTM,该怎么办。我可以只将y_pred转
在Keras中,我发现许多人在训练多对一LSTM模型时将“返回序列”指定为False。
我想知道我是否可以为每个时间步单元使用一个时间分布层,然后在上面使用一个密集层来获得输出?是的,您可以这样做。
问题是,你想要实现什么。return_序列返回所有隐藏状态,通常用于堆叠多个LSTM或用于顺序对顺序预测(多对多)。默认值为“False”,因为它不是使用序列输出的标准用例
当您使用最终密集层中的序列输出进行多对一预测时,它实际上没有帮助,因为LSTM应该已经学会了这样做。尝试一下,有时会有帮助,但
有时我犯了一个错误,试图在同一个GPU(两个不同的脚本)中使用keras同时运行两个训练,使我的机器崩溃或破坏两个训练
我想能够在我的脚本测试,如果有一些训练运行,因此要么改变gpu或停止新的训练
我在搜索答案时发现的唯一提示是使用nvidia smi检查GPU中运行的进程
nvidia smi输出示例:
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 411
标签: Keras
autoencodermaximizeloss
我想训练一个自动编码器,使重建误差在某些观测值上较低,而在其他观测值上较高
from keras.model import Sequential
from keras.layers import Dense
import keras.backend as K
def l1Loss(y_true, y_pred):
return K.mean(K.abs(y_true - y_pred))
model = Sequential()
model.add(Dense(5, input_di
我是火车模型,将模型保存在磁盘上,使用模型时出错
Error when checking input: expected conv2d_input to have 4 dimensions, but got array with shape (150, 150, 3)
列车型号:
model = Sequential()
model.add(Conv2D(32, (3, 3), input_shape=(150, 150, 3))
使用模式:
model = load_model(os.p
我正在处理CIFAR-10数据集,并试图获得基准或至少90%的准确性。我已经尝试了下面提到的所有方法,但大多数都会产生相同的结果,那就是经过一段时间后,训练精度没有提高,并且保持稳定,验证精度也略有波动。
数据集目录如下所示:
\cifar
\train(total 40,000 images. 4000 images per class. Total 10 classes)
\airplane
\automobile......(similar struc
要使用Keras训练模型,我是否应该将所有图像加载到一个数组中,以创建类似
x_train, y_train
或者,有没有更好的方法在训练时在飞行中读取图像。我没有寻找ImageDataGenerator类,因为我的输出是一个点数组,而不是基于目录名的类
我设法将我的数据csv文件包含在9列中的点阵列和图像文件名,如下所示:
x1 x2。。。。。x8 Image_file_name将整个数据集加载到阵列中的内存中不是一个好主意,因为内存消耗可能会失控,因此应该使用生成器。ImageDataGe
我已经创建了一个模型来对飞机和汽车图像进行分类,但在非常长的时间之后,acc和val_acc保持不变
import numpy as np
import matplotlib as plt
from keras.models import Sequential
from keras.layers import Convolution2D
from keras.layers import MaxPooling2D
from keras.layers import Flatten
from kera
标签: Keras
recurrent-neural-networkembedding
我正在尝试训练一个RNN模型,它对名字的来源进行分类。数据看起来像附加的图像。我知道我必须首先将标签映射为整数。我正在使用以下代码来执行此操作:
from sklearn.preprocessing import LabelEncoder
encoder = LabelEncoder()
origin_label = encoder.fit_transform(origins)
我很难弄清楚接下来的步骤是什么。我正在使用Keras构建这个模型。非常感谢你的帮助
我正在处理一些演示数据来构建一个二进制分类器。有8个分类变量(假设这8个分类变量已经是整数编码的)以及14个数值变量
我将分类输入和数字输入分开,并创建两部分输入:8个分类输入首先进入嵌入层。嵌入层将连接到14维数字输入层
因此,整个模型的实际(一条记录/一行)/输入如下:
[1,2,3,4,5,6,7,8,[1,2,3,4,…,14]]
我的模型结构是这样的
cat_inputs = []
embeddings = []
for col in encoded_vars:
#
我有一个经过训练的图像分类模型。该模型基于Keras附带的异常模型,它期望输入图像的大小为299x299像素。因此,在将图像输入模型之前,我会将图像调整为该格式
但是,当调用model.predict(img)时,我确实会得到以下错误:
ValueError: Input 0 is incompatible with layer model:expected shape=(None, 299, 299, 3), found shape=(None, 299, 3)
但是,当我在调试器中调用pr
我可以看到keras已经重新实现了优化器。我想使用keras中不可用的优化器,但在后端可用,例如tensorflow:
tf.train.FtrlOptimizer
你能给我一些要点吗?我需要做些什么,破解框架,从后端使用优化器
谢谢,,
Jozef好吧,我想办法是添加一个包装优化程序你介意更详细地分享你的发现吗?您是如何更具体地添加包装优化程序的?
我有一个为keras1.x.x编写的程序,我正试图在keras2.x.x中重新运行它。但是到了这个时候,
from keras.layers import Input, merge
up2 = merge([UpSampling2D(size=(2, 2))(conv5), conv4], mode='concat', concat_axis=1)
它显示以下错误:
UserWarning: The `merge` function is deprecated and will be rem
我正试图实现本文中的可微神经词典:在Keras中
我正在创建一个自定义层作为DND,但是每次运行时我都需要将数据传递给该层,特别是键和Q值。不幸的是,到目前为止我还不能,有没有办法通过某种函数调用将这些值传递给我的自定义层
似乎一旦层被创建和编译,我就不能修改或附加任何信息到它的数据结构中,但是任何和所有的帮助都是非常感谢的
自定义层为DNDLayer
dnd = DNDLayer()(previous_layer)
...compile model etc...
dnd.method()
导
我已使用加载了一个resnet模型
>从Kalas.Apvest.RESNET50导入ReNET50,现在我想在模型中间插入一些新的层。
上面的链接中描述了一个解决方案,但是ResNet模型在其架构中也有一些添加层,这就是我得到以下错误的原因:
ValueError: A merge layer should be called on a list of inputs.
>由快捷路径和主路径组成。难度取决于添加或删除的位置和方式,即修改短路径、修改主路径或删除路径。
如果您在块之间插入新
JHDF5(Java的HDF5)中是否有任何方法可用于列出H5文件中的所有路径
我有一个H5文件(使用Keras生成),我不知道如何从中检索数据集。不管我怎么努力,我都找不到一种方法可以做到这一点。感谢您的帮助 首先创建一个HDF5ArchiverFactory和open()(或openForReading())文件。这将为您提供一个IHDF5Archiver(或IHDF5ArchiveReader),您可以在其上调用list(),以获取存档的成员
JHDF5的文档是可怕的自动生成的废话。如果您
在Keras中,在模型中使用Lambda时,我无法保存模型检查点。它给出了一个值错误:
ValueError: can only convert an array of size 1 to a Python scalar
代码如下
model1 = Sequential()
model1.add(Embedding(MAX_NUM_WORDS,
EMBEDDING_DIM,
weights=[embedding_matrix],
我想预览keras图像数据生成器的输出。例如,如何从生成器生成5幅图像
train_datagen = ImageDataGenerator(
rescale=1./255,
shear_range=0.2,
zoom_range=0.2,
horizontal_flip=True)
test_datagen = ImageDataGenerator(rescale=1./255)
train_generator = train
标签: Keras
conv-neural-networktransfer-learning
我正试图通过使用数据扩充来改进迁移学习模型的性能,该模型使用异常作为预训练模型。目标是对狗的品种进行分类train_张量和valid_张量分别在numpy数组中包含训练图像和测试图像
from keras.applications.xception import Xception
model = Xception(include_top = False, weights = "imagenet")
datagen = ImageDataGenerator(zoom_range=0.2,
标签: Keras
hyperparameterstalos
我试图通过使用talos库调整CNN模型的超参数,但我得到了确保函数返回模型和输出的错误。但是在我的函数中,我返回两个变量
我试过很多文章,但它们的命令都很好。我正在kaggle笔记本上写代码
def Talos_Model(X_train, y_train, X_test, y_test, params):
#parameters defined
lr = params['lr']
epochs=params['epochs']
dropout_rate=par
我试图理解SimpleRN中涉及的矩阵计算
我从一些博客文章和stackoverflow中了解到,SimpleRN(单位)创建了一个层,其中每个层中包含RNN的单位数。
SimpleRN涉及以下计算
W=内核#形状-(1,单位)
U=循环的_内核#形状-(单位,单位)
B=偏差#形状-(单位)
输出=新状态=动作(W*输入+U*状态+B)
请帮助我了解以下代码段的输入和输出维度
生成X和Y的函数。其中Y是X的累积和
“def生成_批次(n=256):
模型=顺序()
add(SimpleRNN(
标签: Keras
conv-neural-networklstm
我喜欢使用多层CONVLSM模型检查我的模型。我的训练数据的形状是
trainX.shape (5000, 200, 4) # testX.shape (2627, 200, 4)
下面是我的代码,它运行良好
print('trainX.shape', trainX.shape) # trainX.shape (5000, 200, 4)
print('testX.shape', testX.shape) # testX.shape (2627, 200, 4)
# reshape into
标签: Keras
lstmpaddingmasking
我有一组样本,每个样本都是一组属性的序列(例如,一个样本可以包含10个序列,每个序列有5个属性)。属性的数量始终是固定的,但序列的数量(即时间戳)可能因样本而异。我想使用这个样本集来训练Keras中的LSTM网络以解决分类问题,因此我应该填充所有批次样本的输入大小,使其相同。但是keras中的pad_sequences处理器获得固定数量的具有可变属性的序列,并在每个序列中填充缺失的属性,而我需要向每个样本添加更多具有固定属性长度的序列。因此,我认为我不能使用它,因此我分别填充了我的样本,并制作了
我有一个数据,有两个输出变量和多个输入变量,我用神经网络建立模型,但现在我想做超参数调整
对于调优,我使用了网格搜索,我编写了网格搜索的代码,但在尝试grid.fit(X_train,Y_train)时出现错误错误是ValueError:Check model target时出错:传递给模型的Numpy数组列表不是模型预期的大小。预期会看到2个数组,但得到了以下1个数组的列表:[array([[1.62970054,2.33817343],
然后我制作了两个不同的数组,然后作为grid.fit(
标签: Keras
word2vectf.kerassubsampling
我正在Pytorch和Tensorflow2中实现该模型。我对频繁单词的二次抽样的实施有疑问。从论文中逐字计算,对单词wi进行二次抽样的概率为
其中,t是一个自定义阈值(通常是一个小值,如0.0001),而f是文档中单词的频率。尽管作者以一种不同但几乎相同的方式实现了它,但让我们坚持这个定义
当计算p(wi)时,我们可以得到负值。例如,假设我们有100个单词,其中一个单词的出现频率比其他单词高(我的数据集就是这样)
将numpy导入为np
导入seaborn作为sns
np.random.se
标签: Keras
conv-neural-networktensorflow2.0
总结问题
我有一个来自76000个数据点长的传感器的原始信号。我想
用CNN处理这些数据。要做到这一点,我想我可以使用Lambda层从原始信号(如
x = Lambda(lambda v: tf.abs(tf.signal.stft(v,frame_length=frame_length,frame_step=frame_step)))(x)
这完全有效。但我想更进一步,提前处理原始数据。希望卷积1D层能起到滤波器的作用,让一些频率通过,并阻止其他频率
我尝试的
我确实有两个独立的(Conv1
标签: Keras
tensorflow2.0pyopenclamd-gpuplaidml
我有一个带有AMD处理器的MacBookPro,我想在这个GPU上运行Keras(Tensorflow后端)。我开始知道Keras只适用于NVIDIA GPU。解决方法是什么(如果可能)?您可以使用库来克服此问题。我已经测试过了,对我来说效果很好
注意:我有python版本3.7,我将使用pip3进行软件包安装。
步骤:
使用以下命令安装OpenCL包
pip3安装pyopencl
使用以下命令安装库
pip3安装pip安装plaidml keras
运行PlaidML的安装程序。安装时,您
我的Keras模型没有学到任何东西,我也不知道为什么。问题是,在训练期间,损失值和精度值不变。我尝试过提高学习速度,但没有效果,我也尝试过更换optmizers,但没有任何改进。
完整代码如下:
import random
import pandas as pd
import tensorflow as tf
from keras.utils import np_utils
from keras.utils import to_categorical
from sklearn.preproces
我正在研究多类害虫分类。我要鉴定10种昆虫。但项目要求还包括一个未知类,即如果任何输入不属于10个类中的任何一个,模型应将其分类为“未知类”。
我无法定义此未知类。如果有人有任何想法,请帮助我。
不,我没有使用任何“未知类”的示例。事实上,这是不可行的,因为有无限的东西可以超出我拥有的10类,可以被视为“未知类”。下面是我的代码:
import pandas as pd
import numpy as np
import os
import keras
import matplotlib.pyp
我将模型从tf.keras转换为caffe。当我在测试集上使用Caffe评估模型时,我发现使用Caffe比使用tf.keras的精度更高。我想不出一个办法来找出问题的根源(如果一开始就有问题……)
这种差异是由于用于加速计算的较低级别库造成的(我想到的是cudnn和caffe引擎)?tensorflow的keras模块是否存在众所周知的精度问题?
顺便说一下,还有其他人也有类似的问题:
这是可能发生的
将keras.h5模型转换为.caffemodel后,将以数字形式复制权重。但是,在内部,您
标签: Keras
conv-neural-networkvalueerror
运行上述代码,我得到以下错误:
lstm_output_size = 128
cnn = Sequential()
cnn.add(Convolution1D(64, 3 ,activation="relu",input_shape=(105, 1)))
cnn.add(Convolution1D(64, 3, activation="relu"))
cnn.add(MaxPooling1D(pool_size=(2)))
cnn.add(Flatten(
标签: Keras
convolutionmxnet
我有自己的数据集。我想做一个分类任务。但我在Mxnet和Keras中构建了相同的符号网络。甚至优化器规则也是一样的。但结果是不同的
我的Mxnet代码如下:
结果:看起来像拉姆登?
但我的keras代码与网络相同:
但结果要好得多。在训练集中,我可以100%
我仍然不明白为什么有相同的网络架构和数据是相同的。然而,两帧之间的分类结果很大
希望有人能给点建议。Thx。原始海报似乎已经放弃了这个问题。您使用什么数据进行培训?您使用的是什么数据迭代器?尝试调整学习率和批量大小。如果数据是公开
在LSTM上用于建模IMDB序列数据()的keras示例中,在输入LSTM层之前有一个嵌入层:
model.add(Embedding(max_features,128)) #max_features=20000
model.add(LSTM(128))
嵌入层真正做什么?在这种情况下,这是否意味着进入LSTM层的输入序列的长度是128?如果是这样,我可以将LSTM层写为:
model.add(LSTM(128,input_shape=(128,1))
但还应注意的是,输入X_列已进行pad
我搜索并发现了类似的问题,但没有一个问题与我所面临的问题相同。我正在尝试使用Theano后端(都是最新版本)实现Keras的神经网络,它涉及一个Lambda层,该层获取一个层的一维输出,并将其转换为一个n维向量,一维输出重复n次
我似乎遇到的问题是,在Lambda层,Keras似乎期望输入与我指定的输出形状具有相同的维度:
x=Input(shape=(2,))
V1=Dense(1)(x)
V2=Lambda(lambda B : B[0,0]*K.ones((3,)),output_shap
我知道输入权重的初始值设定项是“glorot_uniform”,隐藏统计数据权重的初始值设定项是“正交”,偏差的初始值设定项是“零”
但是我不知道GRU的第一个隐藏状态的初始值是零。您可以在中找到以下行
def get_初始_状态(自身,输入):
#构建形状的全零张量(样本、输出)
初始状态=K.zeros_like(输入)#(采样、时间步、输入尺寸)
初始_状态=K.sum(初始_状态,轴=(1,2))#(样本,)
初始_状态=K.expand_dims(初始_状态)#(示例,1)
如果has
众所周知,keras中的稀疏类交叉熵可以得到各类之间的平均损失函数。但如果我最关心的只是某一类呢?比如,如果我想将基于该类别的精度(=TP/(TP+FP))定义为损失函数,我如何编写它?谢谢
我的代码是:
from keras import backend as K
def my_loss(y_true,y_pred):
y_true = K.cast(y_true,"float32")
y_pred = K.cast(K.argmax(y_pred),"float32")
标签: Keras
gensimword2vecword-embedding
我尝试将gensim的get\u keras\u嵌入集成到一个keras模型中
首先我做文本预处理
text\u to\u word\u序列将文本转换为令牌序列
w2v.vocab[tok].index将单词转换为gensim的单词索引
pad_序列(序列,maxlen=MAX_序列长度,value=999999)padding带有一些值
然后我建立了一个模型
embedding_layer = w2v.get_keras_embedding(train_embeddings=False)
..
我试图使用自定义(f-1分数)指标,同时在lstm crf模型中使用keras.utils的分类。我正在测试来自keras.contrib conll2000\u chunking\u crf的示例。但是,我在度量中传递的y_true没有形状,因此to_Category不起作用。我可以做些什么来将y_true转换为度量中的一个热表示吗?
这里是f-1分数的代码,这与Keras在被删除之前使用的代码差不多。
这是火车的形状,测试
print(train_x.shape)
print(train_x
前一层是嵌入大小(V clases,K-outputdim)-我想引入一个权重矩阵大小K x T。权重是可训练的(嵌入也是如此)。它们生成一个VxT矩阵,将在下游使用。
1) 我该怎么办?
2) 这会影响梯度吗
基本上是向量x矩阵。
示例-嵌入vocab=10,dim K=4。对于词汇表中的某个特定成员,我的嵌入权重是一个向量大小(1,4)(想想行向量)
对于每一行向量,我想乘以一个4×10的权重矩阵,得到一个1×10的向量(或层)。权重矩阵对于词汇表的所有成员都是通用的
该1 x 10矢量将输
下面是我的发电机结构。
如您所见,如果我删除批处理规范化,GAN将非常好地工作。
但是如果我在注释处添加批处理规范化,它只显示噪声
我不知道为什么。我曾尝试只向生成器或鉴别器添加BN,或同时向两者添加BN。
即使我只在任何地方添加了一个BN层,它也不会起作用
我正在试图修复git的源代码
我知道这是用韩语解释的,你们不容易理解,但这是keras教科书非常简单的来源
Dense(128 * 16 * 16)
LeakyReLU
Reshape((16, 16, 128))
Conv2D(256,
我已经用MLflow跟踪测试了一些小例子,但是对于我的用例,我希望在每个历元之后保存权重。
有时我会在跑步完全完成之前终止跑步(我不能使用EarlyStoping),但我现在的体验是,权重不会保存到跟踪ui服务器。
是否有办法在每个历元之后执行此操作?将权重保存到磁盘,然后将其作为工件记录。只要检查点/权重保存到磁盘,就可以使用mlflow\u log\u artifact()或mlflow\u log\u artifact()记录它们。从
mlflow.log\u artifact()将本地文
标签: Keras
coremlcoremltools
我试图将一个非常简单的keras模型转换为CoreML,但是,CoreML模型的输入似乎与我的期望不符
我正在创建的模型的输入形状是(5,10)(五个时间步,10个特征),但是,在转换模型并在Xcode中打开模型后,它表示输入类型是多数组(双10),据我所知,这是一个一维数组。我的问题是,我做错了什么?有没有办法告诉CoreML输入是5x10
这是我正在创建的keras模型
from keras.models import Sequential
from keras.layers import
我在一个相当困难的数据集上训练CNN。我得到了一些非常好的结果,但注意到我成功地将验证生成器的批量大小设置为1。但列车批量大小设置为32。如果我知道将验证批大小也更改为32,那么我的结果很糟糕,我很难训练网络
我只是想不通为什么将验证批大小设置为1或32会有任何区别。Iam使用MSE作为度量,认为这只是所有样本的平均值
那么,为什么批大小为1时会得到好的验证丢失结果,而批大小为32时会得到坏的验证丢失结果呢?如果批量大小为1,可以训练模型吗?或者我的模型在这种情况下训练过度了
提前感谢您的建议
标签: Keras
lstmbidirectional
我一直在尝试计算Keras中LSTM单元中的参数数量。我创建了两个模型,一个使用LSTM,另一个使用CuDNNLSTM
模型的部分总结如下所示
CuDNNLSTM模型:
_________________________________________________________________
Layer (type) Output Shape Param #
=======================
标签: Keras
saveloadpickletokenize
我已经多次使用以下代码段:
保存:
# saving model and tokenizer
with open('./static_models/tokenizer.pickle', 'wb') as handle:
pickle.dump(tokenizer, handle, protocol=pickle.HIGHEST_PROTOCOL)
model.save('./static_models/model.h5')
装载:
model = models.load_model(
标签: Keras
lstmrecurrent-neural-network
因此,当我尝试用LSTM训练模型时,我将输入数据重新调整为(1000,96,1),将数据输出为(1000,24,1),这意味着我想用之前的96个数据预测未来的24个数据。
当我添加一个时间分布密集层作为最后一层时,我得到一个错误:
ValueError: Error when checking target: expected time_distributed_1 to have shape (96, 1) but got array with shape (24, 1)
那怎么了?
这是我的
标签: Keras
multidimensional-arraynumpy-ndarraycnnnumpy-slicing
我正在为窗口10上的Keras 2.1.0中的非图像数据建立CNN
我的输入特征是一个非负数的3x12矩阵,输出是一个长度为6x1的二进制多标签向量
我遇到了这个错误期望conv2d_14_输入具有形状(3,12,1),但得到了具有形状(3,12,6500)的数组
下面是我的代码
import tensorflow as tf
from scipy.io import loadmat
import numpy as np
from tensorflow.keras.layers import B
标签: Keras
vectorizationembeddingn-gramfarsi
为了改进我的模型,我使用基于字符的3-Gram来代替word:)
代码片段如下所示:
def生成内存(已发送列表、N、语音大小、序列大小):
NGramList=[]
对于“已发送”列表中的“已发送”:
# ---------------------------- حذف فاصله ----------------------------
已发送=已发送。替换(“,”)
# ------------------------- استخراج ان تایی ها --------------
标签: Keras
conv-neural-networktf.keras
我有10个不同的文件夹(类),每个文件夹中都有几个图像。
例如,我的图像名称是Dog_L1、Dog_L2、…Dog_L1000(位于Dog文件夹中)和Cat_L1、Cat_L2、。。。在Cat文件夹中,其余文件夹用不同动物的名称和标签命名(通常为animal_L1、animal_L2、…animal_L1000)。
我想使用image\u dataset\u from\u directory()来读取文件夹,而且我想读取一些特定的图像,而不是从所有文件夹中读取所有图像
例如,我只想从所有文件夹中
上一页 1 2 3 4 5 6 ...
下一页 最后一页 共 60 页