我正在训练一个面部表情(愤怒 vs 快乐)模型。最后一个密集输出层以前是 1,但是当我预测图像时,它的输出始终为 1,准确度为 64%。所以我将其更改为 2 以获取 2 个输出。但现在我收到这个错误::
Epoch 1/15
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-54-9c7272c38dcb> in <module>()
11 epochs=epochs,
12 validation_data = val_data_gen,
---> 13 validation_steps = validation_steps,
14
15 )
10 frames
/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/func_graph.py in wrapper(*args, **kwargs)
966 except Exception as e: # pylint:disable=broad-except
967 if hasattr(e, "ag_error_metadata"):
--> 968 raise e.ag_error_metadata.to_exception(e)
969 else:
970 raise
ValueError: in user code:
/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/training.py:571 train_function *
outputs = self.distribute_strategy.run(
/usr/local/lib/python3.6/dist-packages/tensorflow/python/distribute/distribute_lib.py:951 run **
return self._extended.call_for_each_replica(fn, args=args, kwargs=kwargs)
/usr/local/lib/python3.6/dist-packages/tensorflow/python/distribute/distribute_lib.py:2290 call_for_each_replica …Run Code Online (Sandbox Code Playgroud) 我正在尝试按照此处的教程在我的图像集上使用预先训练的模板:https : //pytorch.org/tutorials/beginner/finetuning_torchvision_models_tutorial.html
只有当我运行我的代码并且控制台锁定时,我总是得到这个“错误”:
[W ParallelNative.cpp:206] Warning: Cannot set number of intraop threads after parallel work has started or after set_num_threads call when using native parallel backend (function set_num_threads)
预先感谢您的帮助,
我在 Matlab 2019b 中训练了一个 CNN,它将图像分为三个类别。当这个 CNN 在 Matlab 中进行测试时,它运行良好,只需要 10-15 秒就可以对图像进行分类。我在 Maltab 中使用了 exportONNXNetwork 函数,以便我可以在 Tensorflow 中实现我的 CNN。这是我用来在 python 中使用 ONNX 文件的代码:
import onnx
from onnx_tf.backend import prepare
import numpy as np
from PIL import Image
onnx_model = onnx.load('trainednet.onnx')
tf_rep = prepare(onnx_model)
filepath = 'filepath.png'
img = Image.open(filepath).resize((224,224)).convert("RGB")
img = array(img).transpose((2,0,1))
img = np.expand_dims(img, 0)
img = img.astype(np.uint8)
probabilities = tf_rep.run(img)
print(probabilities)
Run Code Online (Sandbox Code Playgroud)
当尝试使用此代码对同一测试集进行分类时,它似乎对图像进行了正确分类,但速度非常慢,并且在某些点达到高达 95+% 的高内存使用率时会冻结我的计算机。
我还在命令提示符下对它进行分类时注意到它打印:
2020-04-18 18:26:39.214286: W tensorflow/core/grappler/optimizers/meta_optimizer.cc:530] constant_folding failed: Deadline exceeded: constant_folding exceeded deadline., time = 486776.938ms. …Run Code Online (Sandbox Code Playgroud) 我正在尝试在 Pytorch 上使用 Mc Dropout 实现贝叶斯 CNN,主要思想是通过在测试时应用 dropout 并运行多次前向传递,您可以获得来自各种不同模型的预测。我找到了 Mc Dropout 的应用程序,但我真的不明白他们是如何应用这种方法的,以及他们究竟是如何从预测列表中选择正确的预测的
这是代码
def mcdropout_test(model):
model.train()
test_loss = 0
correct = 0
T = 100
for data, target in test_loader:
if args.cuda:
data, target = data.cuda(), target.cuda()
data, target = Variable(data, volatile=True), Variable(target)
output_list = []
for i in xrange(T):
output_list.append(torch.unsqueeze(model(data), 0))
output_mean = torch.cat(output_list, 0).mean(0)
test_loss += F.nll_loss(F.log_softmax(output_mean), target, size_average=False).data[0] # sum up batch loss
pred = output_mean.data.max(1, keepdim=True)[1] # get the index of the max log-probability
correct += …Run Code Online (Sandbox Code Playgroud) 我有 2 个时间序列的数据,每个序列 18 点。所以我组织了一个 18 行 2 列的矩阵(180 个样本分为 2 个类别 - 激活和非激活)。
所以,我想用这些数据做一个 CNN,我的内核沿着线(时间)朝一个方向走。附图示例。
在我的代码中,与具有 3 个通道的 RGB 相比,我不知道我的通道如何。并且不知道层的输入大小,以及如何计算才能知道全连接层。
我需要使用 conv1d 吗?conv2d?conv3d ? 基于理解 conv 1D 2D 3D,我有 2D 输入,我想做 1D 卷积(因为我在一个方向上移动我的内核),这是正确的吗?
例如,我如何传递内核大小(3,2)?
我的数据是这种形式,使用 DataLoader 和 batch_size= 4 后:
print(data.shape, label.shape)
Run Code Online (Sandbox Code Playgroud)
火炬大小([4, 2, 18]) 火炬大小([4, 1])
我的卷积模型是:
OBS:我只是放了任意数量的输入/输出大小。
# Creating our CNN Model -> 1D convolutional with 2D input (HbO, HbR)
class ConvModel(nn.Module):
def __init__(self):
super(ConvModel, self).__init__()
self.conv1 = nn.Conv1d(in_channels=1, out_channels= 18, kernel_size=3, stride …Run Code Online (Sandbox Code Playgroud) 我正在阅读Kaggle 上发布的这个Heroes Recognition ResNet34 notebook。
作者使用fastai的learn.lr_find()方法求最优学习率。
根据学习率绘制损失函数会产生下图:
似乎损失达到了 1e-1 的最小值,但在下一步中,作者将 1e-2 作为 max_lr 传入fit_one_cycle以训练他的模型:
learn.fit_one_cycle(6,1e-2)
为什么在这个例子中使用 1e-2 而不是 1e-1?这不会只会使训练变慢吗?
我正在尝试使用ResNet50Python ( keras)进行图像识别。我试图用 做同样的任务VGG16,我得到了一些这样的结果(对我来说似乎没问题):
resultsVGG16。训练和验证的准确率/损失函数每一步都在变好,因此网络必须学习。
然而,随着ResNet50训练函数的投注更好,而验证函数没有改变:resultsResNet
我两次都使用了相同的代码和数据,只是模型发生了变化。
那么ResNet50只在训练数据上学习的原因是什么?
我的 ResNet 模型如下所示:
'''Python
model = Sequential()
base_model = VGG16(weights='imagenet', include_top=False,input_shape=
(image_size,image_size,3))
for layer in base_model.layers[:-4]:
layer.trainable=False
model.add(base_model)
model.add(Flatten())
model.add(Dense(256, activation='relu'))
model.add(Dropout(0.4))
model.add(Dense(NUM_CLASSES, activation='softmax'))
Run Code Online (Sandbox Code Playgroud)
VGG 非常相似:
model = Sequential()
base_model = ResNet50(include_top=False, weights='imagenet', input_shape=
(image_size,image_size,3))
for layer in base_model.layers[:-8]:
layer.trainable=False
model.add(base_model)
model.add(Flatten())
model.add(Dense(256, activation='relu'))
model.add(Dropout(0.4))
model.add(Dense(NUM_CLASSES, activation='softmax'))
Run Code Online (Sandbox Code Playgroud) 系统信息 Colab tensorflow 2.2.0
描述当前的行为:当我尝试解决我自己的数据问题时遇到了这个错误,即多标签语义分割。
下面是代码
import tensorflow as tf
import tensorflow.keras.backend as K
IMG_WIDTH = 512
IMG_HEIGHT = 512
IMG_CHANNELS = 3
# batch_shape=(512,512,3)
# inputs = Input(batch_shape=(4, 512, 512, 3))
#Build the model
inputs = tf.keras.layers.Input((IMG_HEIGHT, IMG_WIDTH, IMG_CHANNELS))
#s = tf.keras.layers.Lambda(lambda x: x / 255)(inputs)
#Contraction path
c1 = tf.keras.layers.Conv2D(16, (3, 3), activation='relu', kernel_initializer='he_normal', padding='same')(inputs)
c1 = tf.keras.layers.Dropout(0.1)(c1)
c1 = tf.keras.layers.Conv2D(16, (3, 3), activation='relu', kernel_initializer='he_normal', padding='same')(c1)
p1 = tf.keras.layers.MaxPooling2D((2, 2))(c1)
c2 = tf.keras.layers.Conv2D(32, (3, 3), activation='relu', kernel_initializer='he_normal', padding='same')(p1) …Run Code Online (Sandbox Code Playgroud) 我试图通过参考这篇文章来制作一个手写分类器:https : //github.com/priya-dwivedi/Deep-Learning/blob/master/handwriting_recognition/English_Writer_Identification.ipynb。
在拟合模型时,我收到一条错误消息,指出 fir_generator 不希望有任何此类参数!此外,虽然错误本身是一个意外的参数错误,但标记显示为类型错误,我想知道我的管道是否有问题。
这是模型。(我排除了错误之后的所有代码,因为它不应该以任何方式相关。如果你觉得它很重要,你可以参考上面链接中的代码)
Tensorflow 版本 - 1.14 ,Keras 版本 - 2.2.4
from __future__ import division
import numpy as np
import os
import glob
from PIL import Image
from random import *
from tensorflow.keras.utils
import to_categorical
from sklearn.preprocessing
import LabelEncoder
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
%matplotlib inline
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Dropout, Flatten, Lambda, ELU, Activation, BatchNormalization
from tensorflow.keras.layers import Convolution2D, Cropping2D, ZeroPadding2D, MaxPooling2D
from tensorflow.keras.optimizers import …Run Code Online (Sandbox Code Playgroud) 我正在使用基本的 CNN 模型对我的数据进行分类。我的输入数据的维度是 (325, 20, 244,244)。我使用的代码如下:
model = Sequential()
model.add(Dense(2, activation='relu', input_shape=X_train.shape[1:]))
model.add(Dense(2, activation='sigmoid'))
optimizer = ['SGD', 'RMSprop', 'Adagrad', 'Adadelta', 'Adam', 'Adamax', 'Nadam']
epochs = [10, 50, 100]
param_grid = dict(epochs=epochs, optimizer=optimizer)
model.compile(loss='binary_crossentropy', metrics=['accuracy'])
grid = GridSearchCV(estimator=model, param_grid=param_grid, scoring='accuracy', n_jobs=-1, refit='boolean')
grid_result = grid.fit(X_train, Y_train, validation_data=(X_test, Y_test))
print("Best: %f using %s" % (grid_result.best_score_, grid_result.best_params_))
Run Code Online (Sandbox Code Playgroud)
我得到的输出是:
grid_result = grid.fit(X_train, Y_train, validation_data=(X_test, Y_test))
Traceback (most recent call last):
File "<ipython-input-16-bb553189f3ee>", line 1, in <module>
grid_result = grid.fit(X_train, Y_train, validation_data=(X_test, Y_test))
File "C:\Users\Student\Anaconda3\lib\site-packages\sklearn\model_selection\_search.py", …Run Code Online (Sandbox Code Playgroud)