对于任何Keras层(Layer类),可有人解释如何理解之间的区别input_shape,units,dim,等?
例如,doc说明了units指定图层的输出形状.
在神经网络的图像下面hidden layer1有4个单位.这是否直接转换为对象的units属性Layer?或者units在Keras中,隐藏层中每个权重的形状是否等于单位数?
我注意到在Keras中没有更多的weight_regularizer可用,并且取而代之的是有活动和内核规范化器.我想知道:
我试图用一层构建一个CNN,但我有一些问题.确实,编译器说我
ValueError:检查模型输入时出错:预期conv1d_1_input具有3个维度,但是具有形状的数组(569,30)
这是代码
import numpy
from keras.models import Sequential
from keras.layers.convolutional import Conv1D
numpy.random.seed(7)
datasetTraining = numpy.loadtxt("CancerAdapter.csv",delimiter=",")
X = datasetTraining[:,1:31]
Y = datasetTraining[:,0]
datasetTesting = numpy.loadtxt("CancereEvaluation.csv",delimiter=",")
X_test = datasetTraining[:,1:31]
Y_test = datasetTraining[:,0]
model = Sequential()
model.add(Conv1D(2,2,activation='relu',input_shape=X.shape))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
model.fit(X, Y, epochs=150, batch_size=5)
scores = model.evaluate(X_test, Y_test)
print("\n%s: %.2f%%" % (model.metrics_names[1], scores[1]*100))
Run Code Online (Sandbox Code Playgroud) 我正在使用深度学习库keras并尝试堆叠多个LSTM而没有运气.以下是我的代码
model = Sequential()
model.add(LSTM(100,input_shape =(time_steps,vector_size)))
model.add(LSTM(100))
Run Code Online (Sandbox Code Playgroud)
上面的代码在第三行返回错误 Exception: Input 0 is incompatible with layer lstm_28: expected ndim=3, found ndim=2
输入X是一个形状的张量(100,250,50).我在tensorflow后端运行keras
我想从以下层开始训练深度网络:
model = Sequential()
model.add(Conv2D(32, 3, 3, input_shape=(32, 32, 3)))
Run Code Online (Sandbox Code Playgroud)
运用
history = model.fit_generator(get_training_data(),
samples_per_epoch=1, nb_epoch=1,nb_val_samples=5,
verbose=1,validation_data=get_validation_data()
Run Code Online (Sandbox Code Playgroud)
使用以下生成器:
def get_training_data(self):
while 1:
for i in range(1,5):
image = self.X_train[i]
label = self.Y_train[i]
yield (image,label)
Run Code Online (Sandbox Code Playgroud)
(验证生成器看起来类似).
在培训期间,我收到错误:
Error when checking model input: expected convolution2d_input_1 to have 4
dimensions, but got array with shape (32, 32, 3)
Run Code Online (Sandbox Code Playgroud)
怎么可能,第一层
model.add(Conv2D(32, 3, 3, input_shape=(32, 32, 3)))
Run Code Online (Sandbox Code Playgroud)
?
我正在努力做转学习; 为此我想删除神经网络的最后两层并添加另外两层.这是一个示例代码,它也输出相同的错误.
from keras.models import Sequential
from keras.layers import Input,Flatten
from keras.layers.convolutional import Convolution2D, MaxPooling2D
from keras.layers.core import Dropout, Activation
from keras.layers.pooling import GlobalAveragePooling2D
from keras.models import Model
in_img = Input(shape=(3, 32, 32))
x = Convolution2D(12, 3, 3, subsample=(2, 2), border_mode='valid', name='conv1')(in_img)
x = Activation('relu', name='relu_conv1')(x)
x = MaxPooling2D(pool_size=(3, 3), strides=(2, 2), name='pool1')(x)
x = Convolution2D(3, 1, 1, border_mode='valid', name='conv2')(x)
x = Activation('relu', name='relu_conv2')(x)
x = GlobalAveragePooling2D()(x)
o = Activation('softmax', name='loss')(x)
model = Model(input=in_img, output=[o])
model.compile(loss="categorical_crossentropy", optimizer="adam")
#model.load_weights('model_weights.h5', by_name=True)
model.summary() …Run Code Online (Sandbox Code Playgroud) 有时默认的标准激活,如ReLU,tanh,softmax,......和LeakyReLU等高级激活是不够的.它也可能不属于keras-contrib.
你如何创建自己的激活功能?
我读了很多关于它的文章,似乎没有人回答这个非常基本的问题.它总是含糊不清:
在stateful = FalseLSTM层中,keras会在以下情况后重置状态:
假设我的X_train形状为(1000,20,1),意味着单个值的20个步骤的1000个序列.如果我做:
model.fit(X_train, y_train, batch_size=200, nb_epoch=15)
Run Code Online (Sandbox Code Playgroud)
它会重置每个序列的状态(重置状态1000次)吗?
或者它会重置每个批次的状态(重置状态5次)?
我想重置(随机化)我的Keras(深度学习)模型中所有层的权重.原因是我希望能够使用不同的数据拆分对模型进行多次训练,而不必每次都进行(慢)模型重新编译.
受此讨论的启发,我正在尝试以下代码:
# Reset weights
for layer in KModel.layers:
if hasattr(layer,'init'):
input_dim = layer.input_shape[1]
new_weights = layer.init((input_dim, layer.output_dim),name='{}_W'.format(layer.name))
layer.trainable_weights[0].set_value(new_weights.get_value())
Run Code Online (Sandbox Code Playgroud)
但是,它只是部分有效.
部分地,因为我已经检查了一些layer.get_weights()值,它们似乎发生了变化.但是当我重新开始培训时,成本值远低于第一次运行时的初始成本值.这几乎就像我成功重置了一些重量,但不是全部重量.
任何关于我出错的提示都将深表感谢.谢谢..
我知道在keras中有Conv2DTranspose可用于Image.我们需要在NLP中使用它,因此需要一维反卷积.
我们如何在keras中实现Conv1DTranspose?