我检查了所有解决方案,但我仍面临同样的错误.我的训练图像形状是(26721,32,32,1),我相信它是4维,但我不知道为什么错误显示它是5维.
model = Sequential()
model.add(Convolution2D(16, 5, 5, border_mode='same', input_shape= input_shape ))
Run Code Online (Sandbox Code Playgroud)
所以这就是我定义model.fit_generator的方法
(26721, 32, 32, 1)
有人可以帮我这个吗?
有人可以解释 Keras 中“因果”填充背后的直觉。是否有任何特定的应用程序可以使用它?
keras 手册说这种类型的填充会导致扩张卷积。“扩张”卷积究竟意味着什么?
我正在尝试使用 RandomSearch 创建 CNN 模型,但它非常慢并且会弹出此错误tensorflow:Callback method on_train_batch_end is slow compared to the batch time
我正在 google colab 中运行我的代码,并在 gpu 上设置硬件加速这是我的代码
def model_builder(hp):
model=Sequential([
Conv2D(filters=hp.Int('conv_1_filter',min_value=32,max_value=128,step=32),
kernel_size=hp.Int('conv_1_filter',min_value=2,max_value=3,step=1),
activation='relu',
padding='same',
input_shape=(200,200,3)),
MaxPooling2D(pool_size=(2,2),strides=(2,2)),
Conv2D(filters=hp.Int('conv_2_filter',min_value=32,max_value=128,step=32),
kernel_size=hp.Int('conv_2_filter',min_value=2,max_value=3,step=1),
padding='same',
activation='relu'),
MaxPooling2D(pool_size=(2,2),strides=(2,2)),
Flatten(),
Dense(units=hp.Int('dense_1_units',min_value=32,max_value=512,step=128),
activation='relu'),
Dense(units=10,
activation='softmax')
])
model.compile(optimizer=Adam(hp.Choice('learning_rate',values=[1e-1,1e-3,3e-2])),
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
return model
Run Code Online (Sandbox Code Playgroud)
然后随机搜索和拟合
tuner=RandomSearch(model_builder,
objective='val_accuracy',
max_trials=2,
directory='projects',
project_name='Hypercars CNN'
)
tuner.search(X_train,Y_train,epochs=2,validation_split=0.2)
Run Code Online (Sandbox Code Playgroud) 我对神经网络和keras有点新.我有一些大小为6*7的图像,过滤器的大小为15.我想有几个过滤器并分别训练卷积层,然后将它们组合起来.我在这里看了一个例子:
model = Sequential()
model.add(Convolution2D(nb_filters, kernel_size[0], kernel_size[1],
border_mode='valid',
input_shape=input_shape))
model.add(Activation('relu'))
model.add(Convolution2D(nb_filters, kernel_size[0], kernel_size[1]))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=pool_size))
model.add(Dropout(0.25))
model.add(Flatten(input_shape=input_shape))
model.add(Dense(128))
model.add(Activation('relu'))
model.add(Dense(128))
model.add(Activation('relu'))
model.add(Dropout(0.5))
model.add(Dense(nb_classes))
model.add(Activation('tanh'))
Run Code Online (Sandbox Code Playgroud)
此模型适用于一个过滤器.任何人都可以给我一些关于如何修改模型以使用并行卷积层的提示.
谢谢
我想设计一个卷积神经网络,占用GPU资源不超过Alexnet.我想用FLOP来测量它但我不知道如何计算它.有什么工具可以做到吗?
文章在这里提到了一个巧妙的方法来生成卷积神经网络三胞胎(以产生面嵌入物).
对于具有n个图像的小批量,仅使用半硬三元组进行学习(包含半硬阴性的三元组,其是与锚图像足够接近的负像).
在我们的实验中,我们对训练数据进行采样,使得每个小批量的每个身份选择大约40个面.另外,随机抽样的负面被添加到每个小批量.
我做了什么
我在Wild数据集中使用Labeled Faces进行训练(13233个图像,5749个人,1680个人有两个或更多图像,每批我选择一个锚点,一些正面(意味着我只能使用1680个批次,因为我需要更多)比一个人的一个图像)和负面 - 随机选择的其他人的图像.
我的训练集有些问题.迷你批次是否应包含更多锚点?
我们不是挑选最难的阳性,而是在小批量中使用所有锚定阳性对,同时仍然选择硬阴性
在线生成三元组.这可以通过从小批量中选择硬正/负样本来完成.
要选择半硬阴性,我需要计算三胞胎的嵌入.所以我需要通过三重神经网络进行传递,并比较嵌入.然后,我需要仅使用硬三元组来计算损失函数.这就是我认为我必须做的事情.
我使用三个具有共享参数的卷积神经网络(四个具有最大池和一个完全连接层的卷积层).我还没有使用在线三联体生成,因为我无法理解它是如何完成的.它导致精度不超过70%.
我试图在keras中合并2个连续模型.这是代码:
model1 = Sequential(layers=[
# input layers and convolutional layers
Conv1D(128, kernel_size=12, strides=4, padding='valid', activation='relu', input_shape=input_shape),
MaxPooling1D(pool_size=6),
Conv1D(256, kernel_size=12, strides=4, padding='valid', activation='relu'),
MaxPooling1D(pool_size=6),
Dropout(.5),
])
model2 = Sequential(layers=[
# input layers and convolutional layers
Conv1D(128, kernel_size=20, strides=5, padding='valid', activation='relu', input_shape=input_shape),
MaxPooling1D(pool_size=5),
Conv1D(256, kernel_size=20, strides=5, padding='valid', activation='relu'),
MaxPooling1D(pool_size=5),
Dropout(.5),
])
model = merge([model1, model2], mode = 'sum')
Flatten(),
Dense(256, activation='relu'),
Dropout(.5),
Dense(128, activation='relu'),
Dropout(.35),
# output layer
Dense(5, activation='softmax')
return model
Run Code Online (Sandbox Code Playgroud)
这是错误日志:
文件"/nics/d/home/dsawant/anaconda3/lib/python3.6/site-packages/keras/backend/tensorflow_backend.py",线路392,在is_keras_tensor提高ValueError异常("意外地发现类型的实例
' + str(type(x)) + '." ValueError异常:意外地发现了一个类型的实例<class …
python machine-learning neural-network conv-neural-network keras
我试图运行一个AdamOptimizer进行一步训练,不成功.
optimizer = tf.train.AdamOptimizer(learning_rate)
init = tf.global_variables_initializer()
with tf.Session() as sess:
sess.run(init)
sess.run(optimizer.minimize(cost), feed_dict={X:X_data, Y: Y_data})
Run Code Online (Sandbox Code Playgroud)
控制台吐出一个难看的错误:
FailedPreconditionError (see above for traceback): Attempting to use uninitialized value beta1_power
[[Node: beta1_power/read = Identity[T=DT_FLOAT, _class=["loc:@W1"], _device="/job:localhost/replica:0/task:0/cpu:0"](beta1_power)]]
Run Code Online (Sandbox Code Playgroud)
在代码中,cost是一个明确定义的函数,使用两个参数X,Y(分别为NN和训练标签的条目)实现conv NN加上后勤丢失函数
关于什么可能出错的任何想法?
RuntimeError:给定 groups=1,权重大小为 [32, 3, 16, 16, 16],预期输入 [100, 16, 16, 16, 3] 有 3 个通道,但得到了 16 个通道
这是我认为问题所在的代码部分。
def __init__(self):
super(Lightning_CNNModel, self).__init__()
self.conv_layer1 = self._conv_layer_set(3, 32)
self.conv_layer2 = self._conv_layer_set(32, 64)
self.fc1 = nn.Linear(2**3*64, 128)
self.fc2 = nn.Linear(128, 10) # num_classes = 10
self.relu = nn.LeakyReLU()
self.batch=nn.BatchNorm1d(128)
self.drop=nn.Dropout(p=0.15)
def _conv_layer_set(self, in_c, out_c):
conv_layer = nn.Sequential(
nn.Conv3d(in_c, out_c, kernel_size=(3, 3, 3), padding=0),
nn.LeakyReLU(),
nn.MaxPool3d((2, 2, 2)),
)
return conv_layer
def forward(self, x):
out = self.conv_layer1(x)
out = self.conv_layer2(out)
out = out.view(out.size(0), -1) …Run Code Online (Sandbox Code Playgroud) 我想并行处理单个示例或一批示例(在我的情况下,我只有 cpus,我有多达 112 个)。我试过了,但我得到一个错误,即损失不能从单独的进程中产生梯度(这完全破坏了我的尝试)。我仍然想这样做,并且在多重处理发生后我可以做一个优化器步骤是必不可少的。我该如何解决?我做了一个完全独立的例子:
import torch
import torch.nn as nn
from torch.optim.lr_scheduler import StepLR
from torch.utils.data import Dataset, DataLoader
from torch.multiprocessing import Pool
class SimpleDataSet(Dataset):
def __init__(self, Din, num_examples=23):
self.x_dataset = [torch.randn(Din) for _ in range(num_examples)]
# target function is x*x
self.y_dataset = [x**2 for x in self.x_dataset]
def __len__(self):
return len(self.x_dataset)
def __getitem__(self, idx):
return self.x_dataset[idx], self.y_dataset[idx]
def get_loss(args):
x, y, model = args
y_pred = model(x)
criterion = nn.MSELoss()
loss = criterion(y_pred, y)
return loss
def get_dataloader(D, num_workers, …Run Code Online (Sandbox Code Playgroud) machine-learning multiprocessing deep-learning conv-neural-network pytorch