java -uf_UFCNN值错误:检查模型输入时

Tensorflow 1.0.1 Keras 2.0和Python 3.4

我正在使用UFCNN模型运行回归训练,遵循lukovkin / ufcnn-keras的ufcnn-keras / notebook / UFCNN.ipynb模型(“https://github.com/lukovkin/ufcnn-keras/tree/master/notebook ") and keras funcational API tutorials. But an error shows that " ValueError:检查模型输入时出错:预期输入有形状(无,64,1)但是得到了有形状的数组(6400,1,1)“ . 我希望有人可以帮助我 . 这是我的代码如下:

from __future__ import absolute_import

from __future__ import print_function

import numpy as np

import keras

from keras.models import Model

from keras.models import Sequential

from keras.layers import Input, merge

from keras.layers.core import Activation

from keras.layers.convolutional import Conv1D

import matplotlib.pyplot as plt

from keras.preprocessing import sequence

## UFCNN function

def ufcnn_regression_model(sequence_length=5000,

features=1,

nb_filter=150,

filter_length=5,

output_dim=1,

optimizer='adagrad',

loss='mse'):

inputs = Input(shape=(sequence_length, features), name = 'input')

#########################################################

conv_1 = Conv1D(filters=nb_filter, kernel_size=filter_length, padding='same')(inputs)

relu_1 = Activation('relu')(conv_1)

#########################################################

conv_2 = Conv1D(filters=nb_filter, kernel_size=filter_length, padding='same')(relu_1)

relu_2 = Activation('relu')(conv_2)

#########################################################

conv_3 = Conv1D(filters=nb_filter, kernel_size=filter_length, padding='same')(relu_2)

relu_3 = Activation('relu')(conv_3)

#########################################################

conv_4 = Conv1D(filters=nb_filter, kernel_size=filter_length, padding='same')(relu_3)

relu_4 = Activation('relu')(conv_4)

#########################################################

merge_1 = keras.layers.add([relu_2, relu_4])

conv_5 =Conv1D(filters=nb_filter, kernel_size=filter_length, padding='same')(merge_1)

relu_5 = Activation('relu')(conv_5)

#########################################################

merge_2 = keras.layers.add([relu_1, relu_5])

conv_6 = Conv1D(filters=nb_filter, kernel_size=filter_length, padding='same')(merge_2)

relu_6 = Activation('relu')(conv_6)

#########################################################

conv_7 = Conv1D(filters=nb_filter, kernel_size=filter_length, padding='same')(relu_6)

#########################################################

model = Model(inputs = inputs, outputs = conv_7)

model.compile(optimizer=optimizer, loss=loss)

print(model.summary())

return model

## Input & Output function

def gen_cosine_amp(amp=100, period=25, x0=0, xn=500, step=1, k=0.0001):

cos = np.zeros(((xn - x0) * step, 1, 1))

print("Cos. Shape",cos.shape)

for i in range(len(cos)):

idx = x0 + i * step

cos[i, 0, 0] = amp * np.cos(idx / (2 * np.pi * period))

cos[i, 0, 0] = cos[i, 0, 0] * np.exp(-k * idx)

lahead = 1

expected_output = np.zeros((len(cos), 1))

for i in range(len(cos) - lahead):

expected_output[i, 0] = np.mean(cos[i + 1:i + lahead + 1])

return cos, expected_output

## Parameter

sequence_length = 64

features = 1

nb_filter = 150

filter_length = 5

output_dim = 1

epochs = 5

batch_size = 128

## UFCNN_1 model summary

UFCNN_1 = ufcnn_regression_model(sequence_length=sequence_length)

## Inputs and ouputs to be trained

cos = gen_cosine_amp(xn = sequence_length * 100)[0]

expected_output = gen_cosine_amp(xn = sequence_length * 100)[1]

## Trainning

for i in range(epochs):

print('Epoch', i, '/', epochs)

UFCNN_1.fit(cos, expected_output, verbose=1,epochs=1,shuffle=False, batch_size=batch_size)

print('Predicting')

## Predicting

predicted_output = model.predict(cos, batch_size=batch_size)

我的错误是:

Epoch 0 / 5

---------------------------------------------------------------------------

ValueError Traceback (most recent call last)

in ()

1 for i in range(epochs):

2 print('Epoch', i, '/', epochs)

----> 3 UFCNN_1.fit(cos, expected_output, verbose=1,epochs=1,shuffle=False, batch_size=batch_size)

4 print('Predicting')

5 predicted_output = model.predict(cos, batch_size=batch_size)

/usr/local/lib/python3.4/dist-packages/keras/engine/training.py in fit(self, x, y, batch_size, epochs, verbose, callbacks, validation_split, validation_data, shuffle, class_weight, sample_weight, initial_epoch, **kwargs)

1403 class_weight=class_weight,

1404 check_batch_axis=False,

-> 1405 batch_size=batch_size)

1406 # prepare validation data

1407 if validation_data:

/usr/local/lib/python3.4/dist-packages/keras/engine/training.py in _standardize_user_data(self, x, y, sample_weight, class_weight, check_batch_axis, batch_size)

1293 self._feed_input_shapes,

1294 check_batch_axis=False,

-> 1295 exception_prefix='model input')

1296 y = _standardize_input_data(y, self._feed_output_names,

1297 output_shapes,

/usr/local/lib/python3.4/dist-packages/keras/engine/training.py in _standardize_input_data(data, names, shapes, check_batch_axis, exception_prefix)

131 ' to have shape ' + str(shapes[i]) +

132 ' but got array with shape ' +

--> 133 str(array.shape))

134 return arrays

135

ValueError: Error when checking model input: expected input to have shape (None, 64, 1) but got array with shape (6400, 1, 1)

感谢您的帮助,让它工作!!!!!

BTW:这个模型与lukovkin / ufcnn-keras的模型几乎相同,只是为了更新代码以适应更新版本的keras和tensorflow .

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值