我一直在尝试使用Keras中的神经网络实现一个简单的线性回归模型,希望了解我们如何在Keras库中工作.不幸的是,我最终得到了一个非常糟糕的模型.这是实施:
from pylab import *
from keras.models import Sequential
from keras.layers import Dense
#Generate dummy data
data = data = linspace(1,2,100).reshape(-1,1)
y = data*5
#Define the model
def baseline_model():
model = Sequential()
model.add(Dense(1, activation = 'linear', input_dim = 1))
model.compile(optimizer = 'rmsprop', loss = 'mean_squared_error', metrics = ['accuracy'])
return model
#Use the model
regr = baseline_model()
regr.fit(data,y,epochs =200,batch_size = 32)
plot(data, regr.predict(data), 'b', data,y, 'k.')
Run Code Online (Sandbox Code Playgroud)
生成的图如下:
有人可以指出上述模型定义中的缺陷(可以确保更好的拟合)吗?
python machine-learning linear-regression neural-network keras
我尝试用 Keras 构建一个 3 层 RNN。部分代码在这里:
model = Sequential()
model.add(Embedding(input_dim = 91, output_dim = 128, input_length =max_length))
model.add(GRUCell(units = self.neurons, dropout = self.dropval, bias_initializer = bias))
model.add(GRUCell(units = self.neurons, dropout = self.dropval, bias_initializer = bias))
model.add(GRUCell(units = self.neurons, dropout = self.dropval, bias_initializer = bias))
model.add(TimeDistributed(Dense(target.shape[2])))
Run Code Online (Sandbox Code Playgroud)
然后我遇到了这个错误:
call() missing 1 required positional argument: 'states'
Run Code Online (Sandbox Code Playgroud)
错误详情如下:
~/anaconda3/envs/hw3/lib/python3.5/site-packages/keras/models.py in add(self, layer)
487 output_shapes=[self.outputs[0]._keras_shape])
488 else:
--> 489 output_tensor = layer(self.outputs[0])
490 if isinstance(output_tensor, list):
491 raise TypeError('All layers in a Sequential model ' …Run Code Online (Sandbox Code Playgroud) 输入张量rnn_pv是形状(?, 48, 1)。我想缩放此张量中的每个元素,因此我尝试使用Lambda如下图层:
rnn_pv_scale = Lambda(lambda x: 1 if x >=1000 else x/1000.0 )(rnn_pv)
Run Code Online (Sandbox Code Playgroud)
但这带来了错误:
TypeError: Using a `tf.Tensor` as a Python `bool` is not allowed. Use `if t is not None:` instead of `if t:` to test if a tensor is defined, and use TensorFlow ops such as tf.cond to execute subgraphs conditioned on the value of a tensor.
Run Code Online (Sandbox Code Playgroud)
那么实现此功能的正确方法是什么?
在自回归连续问题中,当零位占据过多位置时,可以将情况视为零膨胀问题(即ZIB)。换句话说,不是要拟合f(x),我们要拟合g(x)*f(x)where f(x)是我们要近似的函数,即y,并且g(x)是一个根据值是零还是非零而输出介于0和1之间的值的函数。
目前,我有两个模型。一个给我的g(x)模型,另一个给我的模型g(x)*f(x)。
第一个模型给了我一组权重。这是我需要您帮助的地方。我可以将sample_weights参数与一起使用model.fit()。当我处理大量数据时,则需要使用model.fit_generator()。但是,fit_generator()没有论点sample_weights。
有sample_weights内部解决方案fit_generator()吗?否则,g(x)*f(x)如果我已经有训练有素的模型,我该如何适应g(x)?
machine-learning time-series generator autoregressive-models keras
输入为1.0或0.0。当我尝试用模型和sparse_categorical_crossentropy损失进行预测时,我得到如下信息:
[[0.4846592 0.5153408]]。
我怎么知道它预测什么类别?
我通过 Keras 创建了一个用于图像识别的深度学习模型,并将模型权重保存为model.save_weights('weights.h5'). 另外,我加载了它并再次使用了重量。
我知道这model.save_weights()可以节省模型权重。我的问题是模型权重是多少?是过滤器的重量吗?
neural-network deep-learning conv-neural-network keras tensorflow
我有两个训练有素的模型(model_A和model_B),并且两个模型都有辍学层。我已经冻结model_A并model_B合并了它们,并获得了新的密集层model_AB(但我尚未删除model_A的和model_B的辍学层)。model_AB的权重将是不可训练的,除了增加的致密层。
现在的问题是:在辍学层model_A和model_B活动状态(即滴神经元)时,我的训练model_AB?
我正在尝试构建图像分类模型。这是一个 4 类图像分类。这是我用于构建图像生成器和运行训练的代码:
train_datagen = ImageDataGenerator(rescale=1./255.,
rotation_range=30,
horizontal_flip=True,
validation_split=0.1)
train_generator = image_gen.flow_from_directory(train_dir, target_size=(299, 299),
class_mode='categorical', batch_size=20,
subset='training')
validation_generator = image_gen.flow_from_directory(train_dir, target_size=(299, 299),
class_mode='categorical', batch_size=20,
subset='validation')
model.compile(Adam(learning_rate=0.001), loss='categorical_crossentropy',
metrics=['accuracy'])
model.fit_generator(train_generator, steps_per_epoch=int(440/20), epochs=20,
validation_data=validation_generator,
validation_steps=int(42/20))
Run Code Online (Sandbox Code Playgroud)
我能够完美地进行训练和验证工作,因为训练目录中的图像存储在每个班级的单独文件夹中。但是,正如您在下面看到的,测试目录有 100 个图像,其中没有文件夹。它也没有任何标签,只包含图像文件。
如何使用 Keras对test文件夹中的图像文件进行预测?
我有两种类型的输入序列,其中input1包含 50 个值和input2包含 25 个值。我尝试在函数式 API 中使用 LSTM 模型来组合这两种序列类型。然而,由于我的两个输入序列的长度不同,我想知道我当前所做的是否是正确的方法。我的代码如下:
input1 = Input(shape=(50,1))
x1 = LSTM(100)(input1)
input2 = Input(shape=(25,1))
x2 = LSTM(50)(input2)
x = concatenate([x1,x2])
x = Dense(200)(x)
output = Dense(1, activation='sigmoid')(x)
model = Model(inputs=[input1,input2], outputs=output)
Run Code Online (Sandbox Code Playgroud)
更具体地说,我想知道如何组合两个具有不同输入长度的 LSTM 层(即在我的例子中为 50 和 25)。如果需要,我很乐意提供更多详细信息。
我制作了一个 TensorFlow CsvDataset,我正在尝试对数据进行标记:
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3'
from tensorflow import keras
import tensorflow as tf
from tensorflow.keras.preprocessing.text import Tokenizer
import os
os.chdir('/home/nicolas/Documents/Datasets')
fname = 'rotten_tomatoes_reviews.csv'
def preprocess(target, inputs):
tok = Tokenizer(num_words=5_000, lower=True)
tok.fit_on_texts(inputs)
vectors = tok.texts_to_sequences(inputs)
return vectors, target
dataset = tf.data.experimental.CsvDataset(filenames=fname,
record_defaults=[tf.int32, tf.string],
header=True).map(preprocess)
Run Code Online (Sandbox Code Playgroud)
运行这个,给出以下错误:
ValueError: len 需要一个非标量张量,得到一个形状 Tensor("Shape:0", shape=(0,), dtype=int32)
我尝试过的:几乎任何可能性领域。请注意,如果我删除预处理步骤,一切都会运行。
数据是什么样的:
(<tf.Tensor: shape=(), dtype=int32, numpy=1>,
<tf.Tensor: shape=(), dtype=string, numpy=b" Some movie critic review...">)
Run Code Online (Sandbox Code Playgroud) keras ×10
python ×7
tensorflow ×6
dropout ×1
generator ×1
keras-layer ×1
loss ×1
lstm ×1
nlp ×1
rnn ×1
tensor ×1
time-series ×1