标签: keras-2

使用Keras进行迁移学习时出错:AttributeError:'list'对象没有属性'dtype'

我收到以下错误

AttributeError:“列表”对象没有属性“ dtype”

运行以下脚本时,该脚本在Keras中使用转移学习来重新训练和微调Inception V3模型中的最后一层。对于我的数据集,我使用的是Kaggle的Cats and Dogs:我还是Keras的新手,非常感谢您的帮助!

这是代码:

import os
import sys
import glob
import argparse
import matplotlib.pyplot as plt

from keras import __version__
from keras.applications.inception_v3 import InceptionV3, preprocess_input
from keras.models import Model
from keras.layers import Dense, GlobalAveragePooling2D
from keras.preprocessing.image import ImageDataGenerator
from keras.optimizers import SGD


IM_WIDTH, IM_HEIGHT = 299, 299 #fixed size for InceptionV3
EPOCHS = 3
BAT_SIZE = 32
FC_SIZE = 1024
NB_IV3_LAYERS_TO_FREEZE = 172
STEPS_PER_EPOCH = 780

def get_nb_files(directory):
  """Get number of files by searching …
Run Code Online (Sandbox Code Playgroud)

python image-recognition keras keras-2

3
推荐指数
1
解决办法
2494
查看次数

MaxPooling2D 后的图像形状,padding ='same' -- 计算卷积自动编码器中的逐层形状

非常简单地,我的问题与在 Keraspadding = 'same'代码中使用时在maxpool 层之后图像大小与输入图像大小不保持相同的问题有关。我正在浏览 Keras 博客:在 Keras 中构建自动编码器。我正在构建卷积自动编码器。自编码器代码如下:

input_layer = Input(shape=(28, 28, 1))
x = Conv2D(16, (3, 3), activation='relu', padding='same')(input_layer)
x = MaxPooling2D((2, 2), padding='same')(x)
x = Conv2D(8, (3, 3), activation='relu', padding='same')(x)
x = MaxPooling2D((2, 2), padding='same')(x)
x = Conv2D(8, (3, 3), activation='relu', padding='same')(x)
encoded = MaxPooling2D((2, 2), padding='same')(x)
# at this point the representation is (4, 4, 8) i.e. 128-dimensional
x = Conv2D(8, (3, 3), activation='relu', padding='same')(encoded)
x = UpSampling2D((2, 2))(x)
x = Conv2D(8, …
Run Code Online (Sandbox Code Playgroud)

deep-learning keras-layer keras-2

2
推荐指数
1
解决办法
4252
查看次数

Keras --- 在 fit_generator() 期间训练冻结

我正在尝试训练我的 6000 个训练数据集和 1000 个验证数据集,但我有一个问题:程序在训练期间只是冻结和挂起,没有任何错误消息。

1970/6000 [========>.....................] - ETA: 1:50:11 - loss: 1.2256 - accuracy: 0.5956
1971/6000 [========>.....................] - ETA: 1:50:08 - loss: 1.2252 - accuracy: 0.5958
1972/6000 [========>.....................] - ETA: 1:50:08 - loss: 1.2248 - accuracy: 0.5960
1973/6000 [========>.....................] - ETA: 1:50:06 - loss: 1.2245 - accuracy: 0.5962
1974/6000 [========>.....................] - ETA: 1:50:04 - loss: 1.2241 - accuracy: 0.5964
1975/6000 [========>.....................] - ETA: 1:50:02 - loss: 1.2243 - accuracy: 0.5961
1976/6000 [========>.....................] - ETA: 1:50:00 - loss: 1.2239 - …
Run Code Online (Sandbox Code Playgroud)

python keras keras-layer keras-2 tf.keras

2
推荐指数
1
解决办法
3525
查看次数

`decode_predictions` 需要一批预测(即形状的二维数组(样本,1000))。找到具有形状的数组:(1, 5)

A 为我自己的测试数据重新训练了 inception_v3 模型。(背景故事:在我尝试解决我的 130 级“问题”之前,我只是想了解整个过程是如何工作的)

现在我得到了.h5。我尝试导入它并预测一些图像。但我只收到以下错误消息。

ValueError: `decode_predictions` expects a batch of predictions (i.e. a 2D array of shape (samples, 1000)). Found array with shape: (1, 5)
Run Code Online (Sandbox Code Playgroud)

有人可以告诉我我做错了什么吗?

我的想法:我读了一些我需要 1000 个概率向量(对于 1000 个类)的东西,但我没有。我如何创建这样的向量并将所有 1000-my_num_of_classes(在我的情况下为 5)设置为 0?我想我必须预成形一个大小为 1000 的二维数组。但它不明白“样本”或在我的情况下“1”代表什么。或者我是否必须为我的 [1.0592173e-07 8.3998479e-09 9.9305904e-01 4.8276172e-05 6.8924953e-03] 数组写一些匹配(在我的情况下)。我在哪里解释 3 (id 2) 类(受过训练)的概率最高?所以也许就像一个文件,我有所有受过训练的课程,就像受过训练的一样?将最高的与对应的行(标签)相匹配?

会很棒:)

那将是我的预测代码

# Testing Inceptionv3
#from keras.applications.imagenet_utils import decode_predictions
import numpy as np
from keras.applications.inception_v3 import decode_predictions
import matplotlib.pyplot as plt
import os
from keras.models import load_model
from PIL import Image …
Run Code Online (Sandbox Code Playgroud)

deep-learning keras tensorflow keras-2

1
推荐指数
1
解决办法
3775
查看次数

不包括顶层调用 Keras 预训练模型的区别

调用包含或不包含模型顶层的 VGG16 模型有什么区别?我想知道,为什么在不包括顶层的情况下调用模型时,模型摘要中没有显示层的输入参数。我通过以下两种方式使用了 VGG16 模型:

from keras.applications import vgg16
model = vgg16.VGG16(weights='imagenet', include_top=False)
print(model.summary)
Run Code Online (Sandbox Code Playgroud)

模型中层的形状不显示任何输入即(无,无,无,64),请参见下文

Layer (type)                 Output Shape              Param 
===================================================================   
block1_conv1 (Conv2D)        (None, None, None, 64)    1792      
block1_conv2 (Conv2D)        (None, None, None, 64)    36928     
block1_pool (MaxPooling2D)   (None, None, None, 64)    0         
Run Code Online (Sandbox Code Playgroud)

但是,以下代码返回输入参数

from keras.applications import vgg16
model = vgg16.VGG16()
print(model.summary)
Run Code Online (Sandbox Code Playgroud)

层的形状,在这种情况下,返回输入参数

Layer (type)                 Output Shape              Param   
==================================================================   
block1_conv1 (Conv2D)        (None, 224, 224, 64)      1792      
block1_conv2 (Conv2D)        (None, 224, 224, 64)      36928     
block1_pool (MaxPooling2D)   (None, 112, 112, 64)       0    
Run Code Online (Sandbox Code Playgroud)

我试图理解为什么会这样,请发表评论

keras tensorflow keras-layer keras-2

1
推荐指数
1
解决办法
1370
查看次数