基于keras,使用imagedatagenerator.flow函数读入数据,训练集ACC极低

在做字符识别的神经网络,数据集是用序号标好名称的图片,标签取图片的文件名。想用Imagedatagenrator
函数和flow函数,增加样本的泛化性,然后生成数据传入网络,可是这样acc=1/类别数,基本为零。请问哪里出了问题

datagen = ImageDataGenerator(
       width_shift_range=0.1,
       height_shift_range=0.1
       )
def read_train_image(self, name):
       myimg = Image.open(name).convert('RGB')
       return np.array(myimg)

def train(self):
       #训练集
       train_img_list = []
       train_label_list = []
       #测试集
       test_img_list = []
       test_label_list = []
       for file in os.listdir('train'):
           files_img_in_array = self.read_train_image(name='train/' + file)
           train_img_list.append(files_img_in_array)  # Image list add up
           train_label_list.append(int(file.split('_')[0]))  # lable list addup
       for file in os.listdir('test'):
            files_img_in_array = self.read_train_image(name='test/' + file)
            test_img_list.append(files_img_in_array)  # Image list add up
            test_label_list.append(int(file.split('_')[0]))  # lable list addup

        train_img_list = np.array(train_img_list)
        train_label_list = np.array(train_label_list)
        test_img_list = np.array(train_img_list)
        test_label_list = np.array(train_label_list)
        train_label_list = np_utils.to_categorical(train_label_list, 5788)
        test_label_list = np_utils.to_categorical(test_label_list, 5788)
        train_img_list = train_img_list.astype('float32')
        test_img_list = test_img_list.astype('float32')
        test_img_list /= 255.0
        train_img_list /= 255.0

这是图片数据的处理,图片和标签都存到list里。下面是用fit_genrator训练

model.fit_generator(
            self.datagen.flow(x=train_img_list, y=train_label_list, batch_size=2),
            samples_per_epoch=len(train_img_list),
            epochs=10,
            validation_data=(test_img_list,test_label_list),
            )

1个回答

模型的定义没有看到,另外你epochs=10是不是太小了,还没有效果。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
关于 keras 中用ImageDataGenerator 做 data augmentation 的问题

各位大神好,小白刚接触深度学习和keras. 有两个问题一直困扰着我,用keras中的 ImageDataGenerator做data augmentation时, (1)每个epoch的图片都不同,这样的做,反向传播时修改的参数还准确吗,训练模型严谨吗, (2)我试着输出过训练图像,发现里面没有原始图像,这样做数据扩张感觉很慌,是不是我使用方法的问题啊,请大佬指点迷津 ``` datagen = ImageDataGenerator( rescale=None, shear_range=0.2, zoom_range=[0.95,1.05], rotation_range=10, horizontal_flip=True, vertical_flip=True, fill_mode='reflect', ) training = model.fit_generator(datagen.flow(data_train, label_train_binary, batch_size=n_batch, shuffle=True), callbacks=[checkpoint,tensorboard,csvlog],validation_data=(data_val,label_val_binary),steps_per_epoch=len(data_train)//n_batch, nb_epoch=10000, verbose=1) ```

DenseFeature作为函数式API的第一层时报AttributeError: 'DenseFeatures' object has no attribute 'shape';该怎么解决啊。

我在用TensorFlow2.0搭建一个简单的全连接网络,第一层我设计的是一个DenseFeature,剩下的是三个Dense层,但我运行的时候却提示我AttributeError: 'DenseFeatures' object has no attribute 'shape'; 代码如下: ``` feature_layer = tf.keras.layers.DenseFeatures(one_order_feature_columns) dense1 = tf.keras.layers.Dense(128, activation='relu')(feature_layer) dense2 = tf.keras.layers.Dense(128, activation='relu')(dense1) dense3 = tf.keras.layers.Dense(1, activation='sigmoid')(dense2) model = tf.keras.Model(inputs=[feature_layer], outputs=dense3) # model = tf.keras.Sequential([ # tf.keras.layers.DenseFeatures(one_order_feature_columns), # tf.keras.layers.Dense(128, activation='relu'), # tf.keras.layers.Dense(128, activation='relu'), # tf.keras.layers.Dense(1, activation='sigmoid') # ]) model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy']) model.fit(train_ds, epochs=5) ``` 我也尝试直接使用Sequential容器来搭建模型(代码中的注释部分),模型能够跑通。但使用函数式API时却不行。我是在哪出错了吗?

keras.util.sequence + fit_generator 如何实现多输出model

输入输出的形式是下面这样: ``` model = Model(inputs=input_img, outputs=[mask,net2_opt,net3_opt]) ``` 由于sequence要求一定要返回一个两个参数的远足,所以生成器的_getitem_的实现如下: ``` class DataGenerator(keras.utils.Sequence): def __getitem__(self, index): #生成每个batch数据,这里就根据自己对数据的读取方式进行发挥了 # 生成batch_size个索引 batch_indexs = self.indexes[index*self.batch_size:(index+1)*self.batch_size] # 根据索引获取datas集合中的数据 batch_datas = [self.datas[k] for k in batch_indexs] # 生成数据 images, masks,heatmaps,xyzs = self.data_generation(batch_datas) return (images, [masks,heatmaps,xyzs]) ``` output中的mask并不能与getitem的返回值匹配。 会报错: ValueError: Error when checking target: expected conv_1x1_x14 to have 4 dimensions, but got array with shape (3,1) 请问,是不是keras.util.sequence不能实现多输出问题?

TensorFlow的Keras如何使用Dataset作为数据输入?

当我把dataset作为输入数据是总会报出如下错误,尽管我已经在数据解析那里reshape了图片大小为(512,512,1),请问该如何修改? ``` ValueError: Error when checking input: expected conv2d_input to have 4 dimensions, but got array with shape (None, 1) ``` **图片大小定义** ``` import tensorflow as tf from tensorflow import keras IMG_HEIGHT = 512 IMG_WIDTH = 512 IMG_CHANNELS = 1 IMG_PIXELS = IMG_CHANNELS * IMG_HEIGHT * IMG_WIDTH ``` **解析函数** ``` def parser(record): features = tf.parse_single_example(record, features={ 'image_raw': tf.FixedLenFeature([], tf.string), 'label': tf.FixedLenFeature([23], tf.int64) }) image = tf.decode_raw(features['image_raw'], tf.uint8) label = tf.cast(features['label'], tf.int32) image.set_shape([IMG_PIXELS]) image = tf.reshape(image, [IMG_HEIGHT, IMG_WIDTH, IMG_CHANNELS]) image = tf.cast(image, tf.float32) return image, label ``` **模型构建** ``` dataset = tf.data.TFRecordDataset([TFRECORD_PATH]) dataset.map(parser) dataset = dataset.repeat(10*10).batch(10) model = keras.Sequential([ keras.layers.Conv2D(filters=32, kernel_size=(5, 5), padding='same', activation='relu', input_shape=(512, 512, 1)), keras.layers.MaxPool2D(pool_size=(2, 2)), keras.layers.Dropout(0.25), keras.layers.Conv2D(filters=64, kernel_size=(3, 3), padding='same', activation='relu'), keras.layers.MaxPool2D(pool_size=(2, 2)), keras.layers.Dropout(0.25), keras.layers.Flatten(), keras.layers.Dense(128, activation='relu'), keras.layers.Dropout(0.25), keras.layers.Dense(23, activation='softmax') ]) model.compile(optimizer=keras.optimizers.Adam(), loss=keras.losses.sparse_categorical_crossentropy, metrics=[tf.keras.metrics.categorical_accuracy]) model.fit(dataset.make_one_shot_iterator(), epochs=10, steps_per_epoch=10) ```

keras model.fit函数报错,输入参数shape维度不正确,如何修正

使用函数 ``` model.fit(x=images, y=labels, validation_split=0.1, batch_size=batch_size, epochs=n_epochs, callbacks=callbacks, shuffle=True) ``` 由于我的训练集中image是灰色图片,所以images的shape为(2, 28, 28),导致报错Error when checking input: expected input_1 to have 4 dimensions, but got array with shape (2, 28, 28) ,请问该如何处理

关于Keras.model的fit()方法中y参数设置的训练问题

keras中fit方法解释y参数可输入字典映射,请问输入格式应该是怎么样的呢? keras.model.fit()方法源码解释如下: ``` y: Numpy array of target (label) data (if the model has a single output), or list of Numpy arrays (if the model has multiple outputs). If output layers in the model are named, you can also pass a dictionary mapping output names to Numpy arrays. ``` 目前model.fit()参数设置如下: ``` self.model.fit(dataset.train_images, dataset.train_labels, batch_size=batch_size, epochs=nb_epoch, validation_data=(dataset.valid_images, dataset.valid_labels), callbacks=callbacks, shuffle=True) ``` 其中dataset.train_images 的shape为: ![图片说明](https://img-ask.csdn.net/upload/202002/24/1582532761_380240.png) 传入的标签字典dataset.train_labels的形式为: ![图片说明](https://img-ask.csdn.net/upload/202002/24/1582532880_754254.png) 报错图片: ![图片说明](https://img-ask.csdn.net/upload/202002/24/1582532908_614861.png) 请问应该如何设置fit()方法中的y参数才能让模型训练出来预测时输出对应的映射名字。

Keras中model.evaluate()报错TypeError: 'numpy.float64' object is not iterable

报错处:loss,accuracy = model.evaluate(testX,testPredict); testX为ndarray(48,1,1); testPredict为ndarray(48,1); 不知道为什么报错TypeError: 'numpy.float64' object is not iterable,求解决,另外想知道model.evaluate(a,b)中的a和b的维度有什么限制吗?

tensorflow2.0如何实现参数共享

您好,我想请教一下如何在tf2.0中实现参数共享。 我正在尝试实现【Unsupervised Visual Representation Learning by Context Prediction】这篇论文中的模型结构如下图所示: ![](https://img-ask.csdn.net/upload/202005/07/1588782780_141467.png) 这个结构的前几层是由相同的两部分组成的,然后在fc7融合为一层,但是这个模型要求fc7层以前并行的两部分的参数是共享的。我不知道该如何在tf2.0里面实现参数共享。要在tf2.0中实现这样的结构该如何做呢? 我尝试的代码如下: ``` def Alex_net(x): conv1 = tf.keras.layers.Conv2D(96,(11,11),activation='relu',strides=(4,4))(x) maxpool1 = tf.keras.layers.MaxPooling2D((3,3),strides=(2,2))(conv1) conv2 = tf.keras.layers.Conv2D(256,(5,5),activation='relu',padding='same')(maxpool1) maxpool2 = tf.keras.layers.MaxPooling2D((3,3),strides=(2,2))(conv2) conv3 = tf.keras.layers.Conv2D(384,(3,3),activation='relu',padding='same')(maxpool2) conv4 = tf.keras.layers.Conv2D(384,(3,3),activation='relu',padding='same')(conv3) conv5 = tf.keras.layers.Conv2D(256,(3,3),activation='relu',padding='same')(conv4) maxpool5 = tf.keras.layers.MaxPooling2D((3,3),strides=(2,2))(conv5) fc6 = tf.keras.layers.Dense(4096,activation='relu')(maxpool5) print(fc6) return fc6 def Concat_net(x1,x2): input_1 = Alex_net(x1) input_2 = Alex_net(x2) concat = tf.keras.layers.concatenate([input_1,input_2]) fc7 = tf.keras.layers.Dense(4096,activation='relu')(concat) fc8 = tf.keras.layers.Dense(4096,activation='relu')(fc7) fc9 = tf.keras.layers.Dense(8,activation='softmax')(fc8) C = fc9 return C def final_net(width,height,depth): inputshape=(height,width,depth) inputs_1 = tf.keras.layers.Input(shape=inputshape) inputs_2 = tf.keras.layers.Input(shape=inputshape) outputs = Concat_net(inputs_1, inputs_2) model = tf.keras.Model([inputs_1,inputs_2],outputs,name='concat_NET') return model F=final_net(96,96,3) F.summary() ``` 但是这样summary打印出来的参数是独立的,并不是共享的,模型只是重复利用了结构。summary的结果如下: ![图片说明](https://img-ask.csdn.net/upload/202005/07/1588783564_478678.png) 要在tf2.0中实现这样的结构该如何做呢?

【Keras LSTM】关于model.evaluate方法的使用

报错处:loss,accuracy = model.evaluate(x_valid,y_valid); x_valid的维度为ndarray(624,50,5),y_valid为list(624),报错: TypeError: 'numpy.float64' object is not iterable ![图片说明](https://img-ask.csdn.net/upload/202005/05/1588644612_670527.jpg) 去掉list语句后仍然报错: ![图片说明](https://img-ask.csdn.net/upload/202005/05/1588651576_240158.jpg) 报错为: ![图片说明](https://img-ask.csdn.net/upload/202005/05/1588651589_34313.jpg) 求解答

在通过keras官网给出的提取中间层方法使用中出现bao'c

在使用keras的中间层数据提取方法中,出现以下报错 object of type 'Conv2D' has no len() 这是我的网络结构 我像提取的是最后一层化合池的数据 ``` model.add(tf.keras.layers.Conv2D(64, (3, 3), padding='same', strides=2, input_shape=(image_size, image_size, 3) , activation='relu')) model.add(tf.keras.layers.MaxPooling2D(pool_size=(2, 2), strides=2, padding='same')) model.add(tf.keras.layers.Conv2D(128, (3, 3), padding='same', strides=2, activation='relu')) model.add(tf.keras.layers.MaxPooling2D(pool_size=(2, 2), strides=2, padding='same')) model.add(tf.keras.layers.Conv2D(256, (3, 3), padding='same', strides=2, activation='relu')) model.add(tf.keras.layers.Conv2D(256, (3, 3), padding='same', strides=2, activation='relu')) model.add(tf.keras.layers.MaxPooling2D(pool_size=(2, 2), strides=2, padding='same')) model.add(tf.keras.layers.Conv2D(512, (3, 3), padding='same', strides=2, activation='relu')) model.add(tf.keras.layers.Conv2D(512, (3, 3), padding='same', strides=2, activation='relu')) model.add(tf.keras.layers.MaxPooling2D(pool_size=(2, 2), strides=2, padding='same')) model.add(tf.keras.layers.Conv2D(512, (3, 3), padding='same', strides=2, activation='relu')) model.add(tf.keras.layers.Conv2D(512, (3, 3), padding='same', strides=2, activation='relu')) model.add(tf.keras.layers.MaxPooling2D(pool_size=(2, 2), strides=2, padding='same',name = "out")) ``` 这是我使用的提取方法 ``` layer_name='out' intermediate_layer_model=Model(input=vgg.input,output=vgg.get_layer(layer_name).output) intermediate_output=intermediate_layer_model.predict(train_data) ``` 在这里的coven2D换成MaxPooling2D也会出现同样的提示 请问是哪个部分有问题 或者说keras的coven2d和不能单独输出shu'ju

Timedistributed层和卷积层的问题

**我在编写maskrcnn代码的时候出现了这么个问题:** **这时源码中的一行代码:(print语句是我自己添加的)** **KL代表的是keras.layers** ```python print("第一个:{}".format(x.shape)) x = KL.TimeDistributed(KL.Conv2D(fc_layers_size, (pool_size, pool_size), padding="valid"),name="mrcnn_class_conv1")(x) print("第2个:{}".format(x.shape)) ``` 然后出来的结果是这样的: **第一个:(8, ?, 7, 7, 256)** **第2个:(?, 32, 1, 1, 1024)** 然后我编写的代码是基本一模一样,参数是一样的,只不过是用tensorflow2.0的keras API ``` print("第一个:{}".format(x.shape)) x=tf.keras.layers.TimeDistributed(tf.keras.layers.Conv2D(fc_layers_size,(pool_size,pool_size),padding="valid"),name='mrcnn_class_conv1')(x) print("第2个:{}".format(x.shape)) ``` 然后出来的结果是这样的: **第一个:(8, None, 7, 7, 256)** **第2个:(None, None, 1, 1, 1024)** 为什么出来的结果不一样呢?又大佬可以解决嘛

tf.keras图像二分类,predict()时卡死是什么原因

根据https://tensorflow.google.cn/tutorials/images/classification 里的例子进行图像二分类 ``` import numpy as np import pandas as pd import matplotlib.pyplot as plt from PIL import Image import tensorflow as tf from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense, Conv2D, Flatten, Dropout, MaxPooling2D from tensorflow.keras.preprocessing.image import ImageDataGenerator train_yes_dir = 'E:\\ml\\tr\\logo_yes\\' train_no_dir = 'E:\\ml\\tr\\logo_no\\' validation_yes_dir = 'E:\\ml\\v\\yes_v\\' validation_no_dir = 'E:\\ml\\v\\no_v\\' train_image_generator = ImageDataGenerator(rescale=1./255) # Generator for our training data validation_image_generator = ImageDataGenerator(rescale=1./255) batch_size = 32 epochs = 10 IMG_HEIGHT = 64 IMG_WIDTH = 64 # 训练数据 train_data_gen = train_image_generator.flow_from_directory(batch_size=batch_size, directory='E:\\ml\\tr\\', color_mode='rgb', shuffle=True, target_size=(IMG_HEIGHT, IMG_WIDTH), class_mode='binary') # 验证数据 val_data_gen = validation_image_generator.flow_from_directory(batch_size=batch_size, directory='E:\\ml\\v\\', color_mode='rgb', shuffle=True, target_size=(IMG_HEIGHT, IMG_WIDTH), class_mode='binary') # 建立模型 model = Sequential([ Conv2D(16, 3, padding='same', activation='relu', input_shape=(IMG_HEIGHT, IMG_WIDTH ,3)), MaxPooling2D(), Conv2D(32, 3, padding='same', activation='relu'), MaxPooling2D(), Conv2D(64, 3, padding='same', activation='relu'), MaxPooling2D(), Flatten(), Dense(512, activation='relu'), Dense(1) ]) model.compile(optimizer='adam', loss=tf.keras.losses.BinaryCrossentropy(from_logits=True), metrics=['accuracy']) ``` ``` model.summary() Model: "sequential" _________________________________________________________________ Layer (type) Output Shape Param # ================================================================= conv2d_12 (Conv2D) (None, 64, 64, 16) 448 _________________________________________________________________ max_pooling2d_12 (MaxPooling (None, 32, 32, 16) 0 _________________________________________________________________ conv2d_13 (Conv2D) (None, 32, 32, 32) 4640 _________________________________________________________________ max_pooling2d_13 (MaxPooling (None, 16, 16, 32) 0 _________________________________________________________________ conv2d_14 (Conv2D) (None, 16, 16, 64) 18496 _________________________________________________________________ max_pooling2d_14 (MaxPooling (None, 8, 8, 64) 0 _________________________________________________________________ flatten_4 (Flatten) (None, 4096) 0 _________________________________________________________________ dense_8 (Dense) (None, 512) 2097664 _________________________________________________________________ dense_9 (Dense) (None, 1) 513 ================================================================= Total params: 2,121,761 Trainable params: 2,121,761 Non-trainable params: 0 _________________________________________________________________ history = model.fit_generator( train_data_gen, steps_per_epoch=312 // batch_size, epochs=epochs, validation_data=val_data_gen, validation_steps=100 // batch_size ) Epoch 1/10 9/9 [==============================] - 1s 120ms/step - loss: 0.7537 - accuracy: 0.5357 - val_loss: 0.6520 - val_accuracy: 0.5000 Epoch 2/10 9/9 [==============================] - 1s 111ms/step - loss: 0.5691 - accuracy: 0.5590 - val_loss: 0.4826 - val_accuracy: 0.7917 Epoch 3/10 9/9 [==============================] - 1s 112ms/step - loss: 0.4936 - accuracy: 0.7750 - val_loss: 0.2535 - val_accuracy: 1.0000 Epoch 4/10 9/9 [==============================] - 1s 106ms/step - loss: 0.2540 - accuracy: 0.9571 - val_loss: 0.1010 - val_accuracy: 1.0000 Epoch 5/10 9/9 [==============================] - 1s 108ms/step - loss: 0.1271 - accuracy: 0.9714 - val_loss: 0.0308 - val_accuracy: 1.0000 Epoch 6/10 9/9 [==============================] - 1s 112ms/step - loss: 0.1058 - accuracy: 0.9786 - val_loss: 0.0299 - val_accuracy: 1.0000 Epoch 7/10 9/9 [==============================] - 1s 109ms/step - loss: 0.0296 - accuracy: 0.9964 - val_loss: 0.0173 - val_accuracy: 1.0000 Epoch 8/10 9/9 [==============================] - 1s 111ms/step - loss: 0.0463 - accuracy: 0.9929 - val_loss: 0.0119 - val_accuracy: 1.0000 Epoch 9/10 9/9 [==============================] - 1s 110ms/step - loss: 0.0471 - accuracy: 0.9893 - val_loss: 0.0150 - val_accuracy: 1.0000 Epoch 10/10 9/9 [==============================] - 1s 115ms/step - loss: 0.0303 - accuracy: 0.9893 - val_loss: 0.0151 - val_accuracy: 1.0000 ``` ![图片说明](https://img-ask.csdn.net/upload/202004/10/1586513081_848177.png) 结果红框的值无限在跑 不出结果 求大神解答

error:module keras.backend has no attribute control_flow_ops

我在win10+keras2.1.5+tenskrflow1.6.0环境下是可以跑的,但是cpu跑太慢,所以想在google colab 试一下,也安装的这个版本,虽然不知道为什么colab显示的还是2.2.5和1.15.0,但是在pip list命令下又是对的,求解答

基于keras写的模型中自定义的函数(如损失函数)如何保存到模型中?

```python batch_size = 128 original_dim = 100 #25*4 latent_dim = 16 # z的维度 intermediate_dim = 256 # 中间层的维度 nb_epoch = 50 # 训练轮数 epsilon_std = 1.0 # 重参数 #my tips:encoding x = Input(batch_shape=(batch_size,original_dim)) h = Dense(intermediate_dim, activation='relu')(x) z_mean = Dense(latent_dim)(h) # mu z_log_var = Dense(latent_dim)(h) # sigma #my tips:Gauss sampling,sample Z def sampling(args): # 重采样 z_mean, z_log_var = args epsilon = K.random_normal(shape=(128, 16), mean=0., stddev=1.0) return z_mean + K.exp(z_log_var / 2) * epsilon # note that "output_shape" isn't necessary with the TensorFlow backend # my tips:get sample z(encoded) z = Lambda(sampling, output_shape=(latent_dim,))([z_mean, z_log_var]) # we instantiate these layers separately so as to reuse them later decoder_h = Dense(intermediate_dim, activation='relu') # 中间层 decoder_mean = Dense(original_dim, activation='sigmoid') # 输出层 h_decoded = decoder_h(z) x_decoded_mean = decoder_mean(h_decoded) #my tips:loss(restruct X)+KL def vae_loss(x, x_decoded_mean): xent_loss = original_dim * objectives.binary_crossentropy(x, x_decoded_mean) kl_loss = - 0.5 * K.mean(1 + z_log_var - K.square(z_mean) - K.exp(z_log_var), axis=-1) return xent_loss + kl_loss vae = Model(x, x_decoded_mean) vae.compile(optimizer='rmsprop', loss=vae_loss) vae.fit(x_train, x_train, shuffle=True, epochs=nb_epoch, verbose=2, batch_size=batch_size, validation_data=(x_valid, x_valid)) vae.save(path+'//VAE.h5') ``` 一段搭建VAE结构的代码,在保存模型后调用时先是出现了sampling中一些全局变量未定义的问题,将变量改为确定数字后又出现了vae_loss函数未定义的问题(unknown loss function: vae_loss) 个人认为是模型中自定义的函数在保存上出现问题,但是也不知道怎么解决。刚刚上手keras和tensorflow这些框架,很多问题是第一次遇到,麻烦大神们帮帮忙!感谢!

使用Keras找不到tensorflow

程序代码 #-*- coding: utf-8 -*- #使用神经网络算法预测销量高低 import pandas as pd #参数初始化 inputfile = 'D:/python/chapter5/demo/data/sales_data.xls' data = pd.read_excel(inputfile, index_col = u'序号') #导入数据 #数据是类别标签,要将它转换为数据 #用1来表示“好”、“是”、“高”这三个属性,用0来表示“坏”、“否”、“低” data[data == u'好'] = 1 data[data == u'是'] = 1 data[data == u'高'] = 1 data[data != 1] = 0 x = data.iloc[:,:3].as_matrix().astype(int) y = data.iloc[:,3].as_matrix().astype(int) from keras.models import Sequential from keras.layers.core import Dense, Activation model = Sequential() #建立模型 model.add(Dense(input_dim = 3, output_dim = 10)) model.add(Activation('relu')) #用relu函数作为激活函数,能够大幅提供准确度 model.add(Dense(input_dim = 10, output_dim = 1)) model.add(Activation('sigmoid')) #由于是0-1输出,用sigmoid函数作为激活函数 model.compile(loss = 'binary_crossentropy', optimizer = 'adam', class_mode = 'binary') #编译模型。由于我们做的是二元分类,所以我们指定损失函数为binary_crossentropy,以及模式为binary #另外常见的损失函数还有mean_squared_error、categorical_crossentropy等,请阅读帮助文件。 #求解方法我们指定用adam,还有sgd、rmsprop等可选 model.fit(x, y, nb_epoch = 1000, batch_size = 10) #训练模型,学习一千次 yp = model.predict_classes(x).reshape(len(y)) #分类预测 from cm_plot import * #导入自行编写的混淆矩阵可视化函数 cm_plot(y,yp).show() #显示混淆矩阵可视化结果 错误提示 Using TensorFlow backend. Traceback (most recent call last): File "D:\python\chapter5\demo\code\5-3_neural_network.py", line 19, in <module> from keras.models import Sequential File "C:\Python27\lib\site-packages\keras\__init__.py", line 3, in <module> from . import utils File "C:\Python27\lib\site-packages\keras\utils\__init__.py", line 6, in <module> from . import conv_utils File "C:\Python27\lib\site-packages\keras\utils\conv_utils.py", line 3, in <module> from .. import backend as K File "C:\Python27\lib\site-packages\keras\backend\__init__.py", line 83, in <module> from .tensorflow_backend import * File "C:\Python27\lib\site-packages\keras\backend\tensorflow_backend.py", line 1, in <module> import tensorflow as tf ImportError: No module named tensorflow

Tensorflow代码转到Keras

我现在有Tensortflow的代码和结构图如下,这是AC-GAN中生成器的部分,我用原生tf是可以跑通的,但当我想转到Keras中实现却很头疼。 ``` def batch_norm(inputs, is_training=is_training, decay=0.9): return tf.contrib.layers.batch_norm(inputs, is_training=is_training, decay=decay) # 构建残差块 def g_block(inputs): h0 = tf.nn.relu(batch_norm(conv2d(inputs, 3, 64, 1, use_bias=False))) h0 = batch_norm(conv2d(h0, 3, 64, 1, use_bias=False)) h0 = tf.add(h0, inputs) return h0 # 生成器 # batch_size = 32 # z : shape(32, 128) # label : shape(32, 34) def generator(z, label): with tf.variable_scope('generator', reuse=None): d = 16 z = tf.concat([z, label], axis=1) h0 = tf.layers.dense(z, units=d * d * 64) h0 = tf.reshape(h0, shape=[-1, d, d, 64]) h0 = tf.nn.relu(batch_norm(h0)) shortcut = h0 for i in range(16): h0 = g_block(h0) h0 = tf.nn.relu(batch_norm(h0)) h0 = tf.add(h0, shortcut) for i in range(3): h0 = conv2d(h0, 3, 256, 1, use_bias=False) h0 = tf.depth_to_space(h0, 2) h0 = tf.nn.relu(batch_norm(h0)) h0 = tf.layers.conv2d(h0, kernel_size=9, filters=3, strides=1, padding='same', activation=tf.nn.tanh, name='g', use_bias=True) return h0 ``` ![生成器结构图](https://img-ask.csdn.net/upload/201910/29/1572278934_997142.png) 在Keras中都是先构建Model,在Model中不断的加层 但上面的代码却是中间包含着新旧数据的计算,比如 ``` .... shortcut = h0 .... h0 = tf.add(h0, shortcut) ``` 难不成我还要构建另外一个model作为中间输出吗? 大佬们帮帮忙解释下,或者能不能给出翻译到Keras中应该怎么写

我的keras的model.fit写在一个loop里,callback每一个epoch会生成一个events文件,如何处理这种问题?

if resume: # creates a generic neural network architecture model = Sequential() # hidden layer takes a pre-processed frame as input, and has 200 units model.add(Dense(units=200,input_dim=80*80, activation='relu', kernel_initializer='glorot_uniform')) # output layer model.add(Dense(units=1, activation='sigmoid', kernel_initializer='RandomNormal')) # compile the model using traditional Machine Learning losses and optimizers model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy']) #print model model.summary() if os.path.isfile('Basic_Rl_weights.h5'): #load pre-trained model weight print("loading previous weights") model.load_weights('Basic_Rl_weights.h5') else : # creates a generic neural network architecture model = Sequential() # hidden layer takes a pre-processed frame as input, and has 200 units model.add(Dense(units=200,input_dim=80*80, activation='relu', kernel_initializer='glorot_uniform')) # output layer model.add(Dense(units=1, activation='sigmoid', kernel_initializer='RandomNormal')) # compile the model using traditional Machine Learning losses and optimizers model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy']) #print model model.summary() #save model # model.save_weights('my_model_weights.h5') log_dir = './log' + datetime.now().strftime("%Y%m%d-%H%M%S") + "/" callbacks = callbacks.TensorBoard(log_dir=log_dir, histogram_freq=0, write_graph=True, write_images=True) # gym initialization env = gym.make("Pong-v0") observation = env.reset() prev_x = None # used in computing the difference frame running_reward = None # initialization of variables used in the main loop x_train, y_train, rewards = [],[],[] reward_sum = 0 episode_number = 0 # main loop while True: if render : env.render() # preprocess the observation, set input as difference between images cur_x = prepro(observation) # i=np.expand_dims(cur_x,axis=0) # print(i.shape) # print(cur_x.shape) if prev_x is not None : x = cur_x - prev_x else: x = np.zeros(Input_dim) # print(x.shape) # print(np.expand_dims(cur_x,axis=0).shape) prev_x = cur_x # forward the policy network and sample action according to the proba distribution # two ways to calculate returned probability # print(x.shape) prob = model.predict(np.expand_dims(x, axis=1).T) # aprob = model.predict(np.expand_dims(x, axis=1).T) if np.random.uniform() < prob: action = action_up else : action = action_down # 0 and 1 labels( a fake label in order to achive back propagation algorithm) if action == 2: y = 1 else: y = 0 # log the input and label to train later x_train.append(x) y_train.append(y) # do one step in our environment observation, reward, done, info = env.step(action) rewards.append(reward) reward_sum += reward # end of an episode if done: print('At the end of episode', episode_number, 'the total reward was :', reward_sum) # increment episode number episode_number += 1 # training # history = LossHistory() model.fit(x=np.vstack(x_train), y=np.vstack(y_train), verbose=1, sample_weight=discount_rewards(rewards), callbacks=[callbacks]) if episode_number % 100 == 0: model.save_weights('Basic_Rl_weights' + datetime.now().strftime("%Y%m%d-%H%M%S") + '.h5') # Log the reward running_reward = reward_sum if running_reward is None else running_reward * 0.99 + reward_sum * 0.01 # if episode_number % 10 == 0: tflog('running_reward', running_reward, custom_dir=log_dir) # Reinitialization x_train, y_train, rewards = [],[],[] observation = env.reset() reward_sum = 0 prev_x = None ``` ```

keras model.predict_classes() 问题

keras model.predict_classes()只能适用于sequential model, 对于Model 模型(functional model)该怎么达到类似的输出类别的效果 e.g results = list(model.predict_classes(data_test,verbose = 1)) score = accuracy_score(label_test,results) 这种在sequential model上可行的方法,如何在functional model 达到相同的效果

keras中model.evaluate()报错:'numpy.float64' object is not iterable

``` x_train, x_test, y_train, y_test = train_test_split(x_data, y_data, test_size=0.25) mean = x_train.mean(axis=0) std = x_train.std(axis=0) train_data = (x_train - mean) / std test_data = (x_test - mean) / std model = Sequential([Dense(64, input_shape=(6,)), Activation('relu'), Dense(32), Activation('relu'), Dense(1)]) sgd = keras.optimizers.SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True) model.compile(loss='mean_squared_error', optimizer=sgd) k = model.fit [loss, sgd] = model.evaluate(test_data, y_test, verbose=1) ``` 最后一步不知道哪出了问题。。test_data, y_test都是dataframe啊 TypeError Traceback (most recent call last) <ipython-input-29-3b0767a3c446> in <module> ----> 1 [loss, mse] = model.evaluate(test_data, y_test, verbose=1) TypeError: 'numpy.float64' object is not iterable

技术大佬:我去,你写的 switch 语句也太老土了吧

昨天早上通过远程的方式 review 了两名新来同事的代码,大部分代码都写得很漂亮,严谨的同时注释也很到位,这令我非常满意。但当我看到他们当中有一个人写的 switch 语句时,还是忍不住破口大骂:“我擦,小王,你丫写的 switch 语句也太老土了吧!” 来看看小王写的代码吧,看完不要骂我装逼啊。 private static String createPlayer(PlayerTypes p...

Vue + Spring Boot 项目实战(十九):Web 项目优化解决方案

快来一起探索如何打脸我们的破项目,兄弟姐妹们把害怕打在公屏上!

你连存活到JDK8中著名的Bug都不知道,我怎么敢给你加薪

CopyOnWriteArrayList.java和ArrayList.java,这2个类的构造函数,注释中有一句话 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 public ArrayList(Collection&lt;? ...

副业收入是我做程序媛的3倍,工作外的B面人生是怎样的?

提到“程序员”,多数人脑海里首先想到的大约是:为人木讷、薪水超高、工作枯燥…… 然而,当离开工作岗位,撕去层层标签,脱下“程序员”这身外套,有的人生动又有趣,马上展现出了完全不同的A/B面人生! 不论是简单的爱好,还是正经的副业,他们都干得同样出色。偶尔,还能和程序员的特质结合,产生奇妙的“化学反应”。 @Charlotte:平日素颜示人,周末美妆博主 大家都以为程序媛也个个不修边幅,但我们也许...

CSDN:因博主近期注重写专栏文章(已超过150篇),订阅博主专栏人数在突增,近期很有可能提高专栏价格(已订阅的不受影响),提前声明,敬请理解!

CSDN:因博主近期注重写专栏文章(已超过150篇),订阅博主专栏人数在突增,近期很有可能提高专栏价格(已订阅的不受影响),提前声明,敬请理解! 目录 博客声明 大数据了解博主粉丝 博主的粉丝群体画像 粉丝群体性别比例、年龄分布 粉丝群体学历分布、职业分布、行业分布 国内、国外粉丝群体地域分布 博主的近期访问每日增量、粉丝每日增量 博客声明 因近期博主写专栏的文章越来越多,也越来越精细,逐步优化文章。因此,最近一段时间,订阅博主专栏的人数增长也非常快,并且专栏价

一个HashMap跟面试官扯了半个小时

一个HashMap能跟面试官扯上半个小时 关注 安琪拉的博客 1.回复面试领取面试资料 2.回复书籍领取技术电子书 3.回复交流领取技术电子书 前言 HashMap应该算是Java后端工程师面试的必问题,因为其中的知识点太多,很适合用来考察面试者的Java基础。 开场 面试官: 你先自我介绍一下吧! 安琪拉: 我是安琪拉,草丛三婊之一,最强中单(钟馗不服)!哦,不对,串场了,我是**,目...

我说我不会算法,阿里把我挂了。

不说了,字节跳动也反手把我挂了。

记录下入职中软一个月(外包华为)

我在年前从上一家公司离职,没想到过年期间疫情爆发,我也被困在家里,在家呆着的日子让人很焦躁,于是我疯狂的投简历,看面试题,希望可以进大公司去看看。 我也有幸面试了我觉得还挺大的公司的(虽然不是bat之类的大厂,但是作为一名二本计算机专业刚毕业的大学生bat那些大厂我连投简历的勇气都没有),最后选择了中软,我知道这是一家外包公司,待遇各方面甚至不如我的上一家公司,但是对我而言这可是外包华为,能...

面试:第十六章:Java中级开发

HashMap底层实现原理,红黑树,B+树,B树的结构原理 Spring的AOP和IOC是什么?它们常见的使用场景有哪些?Spring事务,事务的属性,传播行为,数据库隔离级别 Spring和SpringMVC,MyBatis以及SpringBoot的注解分别有哪些?SpringMVC的工作原理,SpringBoot框架的优点,MyBatis框架的优点 SpringCould组件有哪些,他们...

培训班出来的人后来都怎么样了?(二)

接着上回说,培训班学习生涯结束了。后面每天就是无休止的背面试题,不是没有头脑的背,培训公司还是有方法的,现在回想当时背的面试题好像都用上了,也被问到了。回头找找面试题,当时都是打印下来天天看,天天背。 不理解呢也要背,面试造飞机,上班拧螺丝。班里的同学开始四处投简历面试了,很快就有面试成功的,刚开始一个,然后越来越多。不知道是什么原因,尝到胜利果实的童鞋,不满足于自己通过的公司,嫌薪水要少了,选择...

面试了一个 31 岁程序员,让我有所触动,30岁以上的程序员该何去何从?

最近面试了一个31岁8年经验的程序猿,让我有点感慨,大龄程序猿该何去何从。

大三实习生,字节跳动面经分享,已拿Offer

说实话,自己的算法,我一个不会,太难了吧

程序员垃圾简历长什么样?

已经连续五年参加大厂校招、社招的技术面试工作,简历看的不下于万份 这篇文章会用实例告诉你,什么是差的程序员简历! 疫情快要结束了,各个公司也都开始春招了,作为即将红遍大江南北的新晋UP主,那当然要为小伙伴们做点事(手动狗头)。 就在公众号里公开征简历,义务帮大家看,并一一点评。《启舰:春招在即,义务帮大家看看简历吧》 一石激起千层浪,三天收到两百多封简历。 花光了两个星期的所有空闲时...

工作八年,月薪60K,裸辞两个月,投简历投到怀疑人生!

近日,有网友在某职场社交平台吐槽,自己裸辞两个月了,但是找工作却让自己的心态都要崩溃了,全部无果,不是已查看无回音,就是已查看不符合。 “工作八年,两年一跳,裸辞两个月了,之前月薪60K,最近找工作找的心态崩了!所有招聘工具都用了,全部无果,不是已查看无回音,就是已查看不符合。进头条,滴滴之类的大厂很难吗???!!!投简历投的开始怀疑人生了!希望 可以收到大厂offer” 先来看看网...

大牛都会用的IDEA调试技巧!!!

导读 前天面试了一个985高校的实习生,问了他平时用什么开发工具,他想也没想的说IDEA,于是我抛砖引玉的问了一下IDEA的调试用过吧,你说说怎么设置断点...

都前后端分离了,咱就别做页面跳转了!统统 JSON 交互

文章目录1. 无状态登录1.1 什么是有状态1.2 什么是无状态1.3 如何实现无状态1.4 各自优缺点2. 登录交互2.1 前后端分离的数据交互2.2 登录成功2.3 登录失败3. 未认证处理方案4. 注销登录 这是本系列的第四篇,有小伙伴找不到之前文章,松哥给大家列一个索引出来: 挖一个大坑,Spring Security 开搞! 松哥手把手带你入门 Spring Security,别再问密...

97年世界黑客编程大赛冠军作品(大小仅为16KB),惊艳世界的编程巨作

这是世界编程大赛第一名作品(97年Mekka ’97 4K Intro比赛)汇编语言所写。 整个文件只有4095个字节, 大小仅仅为16KB! 不仅实现了3D动画的效果!还有一段震撼人心的背景音乐!!! 内容无法以言语形容,实在太强大! 下面是代码,具体操作看最后! @echo off more +1 %~s0|debug e100 33 f6 bf 0 20 b5 10 f3 a5...

程序员是做全栈工程师好?还是专注一个领域好?

昨天,有位大一的同学私信我,说他要做全栈工程师。 我一听,这不害了孩子么,必须制止啊。 谁知,讲到最后,更确定了他做全栈程序员的梦想。 但凡做全栈工程师的,要么很惨,要么很牛! 但凡很牛的,绝不是一开始就是做全栈的! 全栈工程师听起来好听,但绝没有你想象的那么简单。 今天听我来给你唠,记得帮我点赞哦。 一、全栈工程师的职责 如果你学习编程的目的只是玩玩,那随意,想怎么学怎么学。...

不要再到处使用 === 了

我们知道现在的开发人员都使用 === 来代替 ==,为什么呢?我在网上看到的大多数教程都认为,要预测 JavaScript 强制转换是如何工作这太复杂了,因此建议总是使用===。这些都...

什么是a站、b站、c站、d站、e站、f站、g站、h站、i站、j站、k站、l站、m站、n站?00后的世界我不懂!

A站 AcFun弹幕视频网,简称“A站”,成立于2007年6月,取意于Anime Comic Fun,是中国大陆第一家弹幕视频网站。A站以视频为载体,逐步发展出基于原生内容二次创作的完整生态,拥有高质量互动弹幕,是中国弹幕文化的发源地;拥有大量超粘性的用户群体,产生输出了金坷垃、鬼畜全明星、我的滑板鞋、小苹果等大量网络流行文化,也是中国二次元文化的发源地。 B站 全称“哔哩哔哩(bilibili...

十个摸鱼,哦,不对,是炫酷(可以玩一整天)的网站!!!

文章目录前言正文**1、Kaspersky Cyberthreat real-time map****2、Finding Home****3、Silk – Interactive Generative Art****4、Liquid Particles 3D****5、WINDOWS93****6、Staggering Beauty****7、Ostagram图片生成器网址****8、全历史网址*...

终于,月薪过5万了!

来看几个问题想不想月薪超过5万?想不想进入公司架构组?想不想成为项目组的负责人?想不想成为spring的高手,超越99%的对手?那么本文内容是你必须要掌握的。本文主要详解bean的生命...

用了这个 IDE 插件,5分钟解决前后端联调!

点击上方蓝色“程序猿DD”,选择“设为星标”回复“资源”获取独家整理的学习资料!作者 |李海庆我是一个 Web 开发前端工程师,受到疫情影响,今天是我在家办公的第78天。开发了两周,...

大厂的 404 页面都长啥样?最后一个笑了...

每天浏览各大网站,难免会碰到404页面啊。你注意过404页面么?猿妹搜罗来了下面这些知名网站的404页面,以供大家欣赏,看看哪个网站更有创意: 正在上传…重新上传取消 腾讯 正在上传…重新上传取消 网易 淘宝 百度 新浪微博 正在上传…重新上传取消 新浪 京东 优酷 腾讯视频 搜...

自从喜欢上了B站这12个UP主,我越来越觉得自己是个废柴了!

不怕告诉你,我自从喜欢上了这12个UP主,哔哩哔哩成为了我手机上最耗电的软件,几乎每天都会看,可是吧,看的越多,我就越觉得自己是个废柴,唉,老天不公啊,不信你看看…… 间接性踌躇满志,持续性混吃等死,都是因为你们……但是,自己的学习力在慢慢变强,这是不容忽视的,推荐给你们! 都说B站是个宝,可是有人不会挖啊,没事,今天咱挖好的送你一箩筐,首先啊,我在B站上最喜欢看这个家伙的视频了,为啥 ,咱撇...

代码注释如此沙雕,会玩还是你们程序员!

某站后端代码被“开源”,同时刷遍全网的,还有代码里的那些神注释。 我们这才知道,原来程序员个个都是段子手;这么多年来,我们也走过了他们的无数套路… 首先,产品经理,是永远永远吐槽不完的!网友的评论也非常扎心,说看这些代码就像在阅读程序员的日记,每一页都写满了对产品经理的恨。 然后,也要发出直击灵魂的质问:你是尊贵的付费大会员吗? 这不禁让人想起之前某音乐app的穷逼Vip,果然,穷逼在哪里都是...

Java14 新特性解读

Java14 已于 2020 年 3 月 17 号发布,官方特性解读在这里:https://openjdk.java.net/projects/jdk/14/以下是个人对于特性的中文式...

前端还能这么玩?(女朋友生日,用前端写了一个好玩的送给了她,高兴坏了)

前端还能这么玩?(女朋友生日,用前端写了一个好玩的送给了她,高兴坏了)

爬虫(101)爬点重口味的

小弟最近在学校无聊的很哪,浏览网页突然看到一张图片,都快流鼻血。。。然后小弟冥思苦想,得干一点有趣的事情python 爬虫库安装https://s.taobao.com/api?_ks...

工作两年简历写成这样,谁要你呀!

作者:小傅哥 博客:https://bugstack.cn 沉淀、分享、成长,让自己和他人都能有所收获! 一、前言 最近有伙伴问小傅哥,我的简历怎么投递了都没有反应,心里慌的很呀。 工作两年了目前的公司没有什么大项目,整天的维护别人的代码,有坑也不让重构,都烦死了。荒废我一身技能无处施展,投递的简历也没人看。我是不动物园里的猩猩,狒狒了! 我要加班,我要996,我要疯狂编码,求给我个机会… ...

相关热词 c# 局部 截图 页面 c#实现简单的文件管理器 c# where c# 取文件夹路径 c# 对比 当天 c# fir 滤波器 c# 和站 队列 c# txt 去空格 c#移除其他类事件 c# 自动截屏
立即提问