小编Bir*_*ish的帖子

如何在ReactJS中将数据从子组件传递给它的父组件?

我正在尝试将数据从子组件发送到它的父组件,如下所示:

const ParentComponent = React.createClass({
    getInitialState() {
        return {
            language: '',
        };
    },
    handleLanguageCode: function(langValue) {
        this.setState({language: langValue});
    },

    render() {
         return (
                <div className="col-sm-9" >
                    <SelectLanguage onSelectLanguage={this.handleLanguage}/> 
                </div>
        );
});
Run Code Online (Sandbox Code Playgroud)

这是子组件:

export const SelectLanguage = React.createClass({
    getInitialState: function(){
        return{
            selectedCode: '',
            selectedLanguage: '',
        };
    },

    handleLangChange: function (e) {
        var lang = this.state.selectedLanguage;
        var code = this.state.selectedCode;
        this.props.onSelectLanguage({selectedLanguage: lang});   
        this.props.onSelectLanguage({selectedCode: code});           
    },

    render() {
        var json = require("json!../languages.json");
        var jsonArray = json.languages;
        return (
            <div >
                <DropdownList ref='dropdown'
                    data={jsonArray} …
Run Code Online (Sandbox Code Playgroud)

reactjs

159
推荐指数
10
解决办法
18万
查看次数

jest.mock(module)和jest.fn()之间的区别是什么?

我已经尝试了几种不同的方法来定义模拟函数,并且我的所有尝试都失败了.当我尝试将其定义如下:

jest.mock('../src/data/server', ()=> ({server: {report: jest.fn()}}));
expect(server.report.mock).toBeCalledWith(id, data, () => {...}, () => {...});
Run Code Online (Sandbox Code Playgroud)

我收到这个错误:

expect(jest.fn())[.not].toBeCalledWith()
jest.fn() value must be a mock function or spy.
Received: undefined
Run Code Online (Sandbox Code Playgroud)

如果我将模拟定义为:

var spy = jest.mock('../src/data/server', ()=> ({server: {report: jest.fn()}}));
expect(spy).toBeCalledWith(id, data, () => {...}, () => {...});
Run Code Online (Sandbox Code Playgroud)

它返回以下错误:

    expect(jest.fn())[.not].toBeCalledWith()
    jest.fn() value must be a mock function or spy.
    Received:
      object: {"addMatchers": [Function anonymous], "autoMockOff": [Function anonymous], "autoMockOn": [Function anonymous], "clearAllMocks": [Function anonymous], "clearAllTimers": [Function anonymous], "deepUnmock": [Function anonymous], "disableAutomock": [Function anonymous], "doMock": [Function …
Run Code Online (Sandbox Code Playgroud)

testunit reactjs jestjs enzyme

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

如何在Keras,RepeatVector或return_sequence = True中连接LSTM层?

我正在尝试在keras中为时间序列开发一个编码器模型.数据的形状是(5039,28,1),这意味着我的seq_len是28,我有一个功能.对于编码器的第一层,我使用112个hunits,第二层将有56个并且能够返回到解码器的输入形状,我不得不添加第二层28个hunits(这个自动编码器应该重建它的输入).但我不知道将LSTM层连接在一起的正确方法是什么.AFAIK,我可以添加RepeatVectorreturn_seq=True.您可以在以下代码中查看我的两个模型.我想知道会有什么不同,哪种方法是正确的?

第一个模型使用return_sequence=True:

inputEncoder = Input(shape=(28, 1))
firstEncLayer = LSTM(112, return_sequences=True)(inputEncoder)
snd = LSTM(56, return_sequences=True)(firstEncLayer)
outEncoder = LSTM(28)(snd)

context = RepeatVector(1)(outEncoder)
context_reshaped = Reshape((28,1))(context)

encoder_model = Model(inputEncoder, outEncoder)
firstDecoder = LSTM(112, return_sequences=True)(context_reshaped)
outDecoder = LSTM(1, return_sequences=True)(firstDecoder)

autoencoder = Model(inputEncoder, outDecoder)
Run Code Online (Sandbox Code Playgroud)

第二个模型RepeatVector:

inputEncoder = Input(shape=(28, 1))
firstEncLayer = LSTM(112)(inputEncoder)
firstEncLayer = RepeatVector(1)(firstEncLayer)
snd = LSTM(56)(firstEncLayer)
snd = RepeatVector(1)(snd)
outEncoder = LSTM(28)(snd)
encoder_model = Model(inputEncoder, outEncoder)

context = RepeatVector(1)(outEncoder)
context_reshaped = Reshape((28, 1))(context)

firstDecoder = …
Run Code Online (Sandbox Code Playgroud)

autoencoder deep-learning lstm keras tensorflow

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

在React组件中导入Json文件

我正在尝试在React组件中加载languages.json文件.当我想导入json文件时,我在第一步收到以下错误.这是错误:

ERROR in ./app/languages.json
Module parse failed: /.../languages.json Unexpected token (1:12)
You may need an appropriate loader to handle this file type.
SyntaxError: Unexpected token (1:12)
    at Parser.pp.raise (........)
Run Code Online (Sandbox Code Playgroud)

我正在使用webpack,这是配置文件:

   var path = require('path');
   var webpack = require('webpack');

   module.exports = {
       entry: ['./app/main.jsx'],
       devtool: 'cheap-module-eval-source-map',
       output: { path: __dirname+"/app", filename: 'bundle.js' },
       module: {
           loaders: [
              {   test: /\.jsx?$/,
                  loader: 'babel-loader',
                  query: { presets: ['es2015', 'react'] },
                  include: path.join(__dirname, 'src')
              }
          ]
      }
  };
Run Code Online (Sandbox Code Playgroud)

我安装了这些包:

"babel-core": "^6.2.1",
"babel-loader": "^6.2.0",
"babel-preset-es2015": …
Run Code Online (Sandbox Code Playgroud)

json reactjs webpack babeljs

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

将道具发送到React组件以进行Jest单元测试

在组件的渲染部分中,我有以下div:

<div className="col-sm-8" >
<input ref='full_link' className="formctrl" name='full_link' type='text'
value={browser.getURL(this.props.params.id)} />
</div>
Run Code Online (Sandbox Code Playgroud)

要为此组件编写测试单元,我尝试浅显示它(const component = shallow(<myComponent />);)并返回此错误:

TypeError: Cannot read property 'id' of undefined
Run Code Online (Sandbox Code Playgroud)

所以我需要在测试中将这个道具发送给我的组件.我应该如何发送idthis.props.params.id浅度呈现?

unit-testing reactjs jestjs enzyme

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

将 Dropout 添加到测试/推理阶段

我已经在 Keras 中为一些时间序列训练了以下模型:

    input_layer = Input(batch_shape=(56, 3864))
    first_layer = Dense(24, input_dim=28, activation='relu',
                        activity_regularizer=None,
                        kernel_regularizer=None)(input_layer)
    first_layer = Dropout(0.3)(first_layer)
    second_layer = Dense(12, activation='relu')(first_layer)
    second_layer = Dropout(0.3)(second_layer)
    out = Dense(56)(second_layer)
    model_1 = Model(input_layer, out)
Run Code Online (Sandbox Code Playgroud)

然后我定义了一个新模型,其中包含经过训练的层,model_1并添加了具有不同速率 的 dropout 层drp

    input_2 = Input(batch_shape=(56, 3864))
    first_dense_layer = model_1.layers[1](input_2)
    first_dropout_layer = model_1.layers[2](first_dense_layer)
    new_dropout = Dropout(drp)(first_dropout_layer)
    snd_dense_layer = model_1.layers[3](new_dropout)
    snd_dropout_layer = model_1.layers[4](snd_dense_layer)
    new_dropout_2 = Dropout(drp)(snd_dropout_layer)
    output = model_1.layers[5](new_dropout_2)
    model_2 = Model(input_2, output)
Run Code Online (Sandbox Code Playgroud)

然后我得到这两个模型的预测结果如下:

result_1 = model_1.predict(test_data, batch_size=56)
result_2 = model_2.predict(test_data, batch_size=56)
Run Code Online (Sandbox Code Playgroud)

我期望得到完全不同的结果,因为第二个模型有新的 dropout 层并且这两个模型不同(IMO),但事实并非如此。两者都产生相同的结果。为什么会这样?

python neural-network deep-learning keras dropout

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

将groupby的总和作为具有Pandas中不同值的新列

这就是我的数据的样子:

id      date        rt      dnm
101122  2017-01-24  0.0     70
101122  2017-01-08  0.0     49
101122  2017-04-13  0.02976 67
101122  2017-08-03  1.02565 39
101122  2016-12-01  0.0     46
101122  2017-01-25  0.0     69
101122  2017-01-02  0.0     76
101122  2017-07-18  0.02631 38
101122  2016-06-02  0.0     120
221344  2016-10-21  0.00182 176
221344  2016-09-21  0.47732 194
221344  2016-06-23  0.0     169
221344  2017-10-10  0.91391 151
221344  2017-04-29  0.0     33
221344  2017-02-05  0.0     31
221344  2017-10-16  0.0     196
221344  2016-09-25  0.0     33
221344  2016-07-17  0.0     21
221344  2016-07-21  0.0 …
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas

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