keras高效网络导入和数据增强问题

如何解决keras高效网络导入和数据增强问题

我正在尝试使用带有数据增强的转移学习来训练模型。 我的图像数据是32 x 32 x 3,我想导入EfficientNet07,但是每次运行时

from tensorflow.keras.applications import EfficientNetB0
model = EfficientNetB0(weights='imagenet')

我收到错误消息:

ImportError: cannot import name 'EfficientNetB7' from 'tensorflow.keras.applications' (C:\Users\…..

我不情愿地回复到Resnet50,效果很好。但是我真的很想使用高效的网络。

第二,我希望在模型运行时使用keras.expermental.preprocessing层添加数据增强,但是我遇到了错误

from tensorflow.keras.layers.experimental import preprocessing
from tensorflow.keras.models import Sequential
from tensorflow.keras import layers

img_augmentation = Sequential(
    [
        preprocessing.RandomRotation(factor=0.15),preprocessing.RandomTranslation(height_factor=0.1,width_factor=0.1),preprocessing.RandomFlip(),preprocessing.RandomContrast(factor=0.1),],name="img_augmentation",)

AttributeError: module 'tensorflow.keras.layers.experimental.preprocessing' has no attribute 'RandomRotation'

我从https://keras.io/examples/vision/image_classification_efficientnet_fine_tuning/提取了所有这些代码

并且已经从上到下阅读了三次。我继续使用ImageDataGenerator并编写了这段代码

def choosen_args(args):
#this function is to randomly choose the augmentation techniques from the list available in keras

    key_list = []
    arg_list = list(args.keys())
    for i in range(len(arg_list)):
        if np.random.randint(2) == 0:
            pass
        else:
            key_list.append(arg_list[i])
    
    arg_dict = dict((k,args[k]) for k in key_list)
    return arg_dict

#这是我正在使用的所有扩充的列表-但只有少数几个会被选中进行最终转换

args = dict(
    rotation_range = 120,width_shift_range=0.4,height_shift_range=0.4,shear_range=0.2,zoom_range=0.2,fill_mode ='nearest',zca_whitening=True,zca_epsilon=1e-06,brightness_range=(9.0,46.0),channel_shift_range=60.0,horizontal_flip=True,vertical_flip=True,rescale=random.randint(1,11))

data_augmentation_train = ImageDataGenerator( choosen_args(args) ) 
data_augmentation_validation = ImageDataGenerator( choosen_args(args) )

data_augmentation_train.fit(x_train,augment = True)
data_augmentation_validation.fit(x_test,augment = True)

请帮助:

  1. 如何获得有效的net07并使用其权重进行转移学习
  2. 我使用的数据增强代码-如何可视化它的作用-即转换图像
  3. 有没有更简单的方法来进行数据扩充-如何解决导入和属性错误
  4. 将数据放入生成器中之后-如何将其与其余的学习学习代码一起使用。

base_model = tf.keras.applications.ResNet50(weights ='imagenet',

 include_top = False,input_shape = input_size) 
> x_train = tf.keras.applications.resnet50.preprocess_input(x_train)
> x_test = tf.keras.applications.resnet50.preprocess_input(x_test)
> base_model.trainable = False
    inputs = keras.Input(shape=(32,32,3))
    model = base_model_ResNet50(inputs,training=False)
    model = keras.layers.GlobalAveragePooling2D()(model )
    model= keras.layers.Flatten()(model)
    model = keras.layers.Dropout(0.2)(model)
    output = layers.Dense(100,activation="softmax")(model)
    
    history = model.fit(data_augmentation_train.flow (x_train,labels_train,batch_size = 64),validation_data =

data_augmentation_validation.flow(x_test,labels_test))

谢谢

解决方法

尝试以方式导入:

from keras_efficientnets import EfficientNetB0

model = EfficientNetB0(weights='imagenet')
,

首先安装高效网络模块:

public class Test {

    public static void main(String[] args) {
        String[] datas = Test.changeToArray("apple");
        for (String data : datas) {
            System.out.println(data);
        }
        Boolean[] bools = Test.changeToArray(true);
        for (Boolean bool : bools) {
            System.out.println(bool);
        }
    
    }

    public static <T> T[] changeToArray(T data) {
        // i want this..
        // but this is compile error
        // Cannot create a generic array of T
        T[] datas = new T[] {data};
        return datas;
    }

}

然后将其导入为:

!pip install -U efficientnet

创建模型:

import efficientnet.keras as effnet

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?